powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Обращение к элементам форм из потоков
6 сообщений из 6, страница 1 из 1
Обращение к элементам форм из потоков
    #38991409
Запускаю функцию AsyncPing в отдельном потоке. AsyngPing каждые 10 секунд стучится http командой в web сервис. В случае успеха меняется иконка в меню. И все бы ничего, но иногда у пользователя возникает Access Violation. На моей машине и машине тестировщика этого не происходит. Пользователей же порядка 400. У них иногда вылетает. Подозреваю, что это происходит из за обращения к элементам формы из потока. Подскажите знающие люди как правильно обращаться к форме из потока.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
DWORD ThreadID;
HANDLE hThread = 0;
hThread = CreateThread(NULL, 0, AsyncPing, NULL, 0, &ThreadID);

if(hThread == 0)
    MessageBoxW(Application->Handle, L"Error in the fuction AsyncProcess", 0, MB_ICONERROR);

DWORD __stdcall AsyncPing(void *p)
{
    RegPerson* r = new RegPerson();
    try
    {
        while(1)
        {
            if(r->Ping())
                break;
            Sleep(10 * 1000);
        }
    }
    __finally
    {
        delete r;
    }

    bExec = false;
    OnlineOfflineItem->ImageIndex = 1;    // Online
    return 1;
}
...
Рейтинг: 0 / 0
Обращение к элементам форм из потоков
    #38991495
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ключеров Александркак правильно обращаться к форме из потока
Посылкой ей сообщения через SendMessage() или PostMessage().
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Обращение к элементам форм из потоков
    #38991497
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ключеров АлександрCreateThread
Кстати, в описании этой функции написано, что ею нельзя пользоваться в программах,
использующих RTL. Надо использовать beginthread(ex).
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Обращение к элементам форм из потоков
    #38992886
Спасибо. Сделал через PostMessage. В гугле ничего другого не нашел.
Оставил пока не CreateThread.
...
Рейтинг: 0 / 0
Обращение к элементам форм из потоков
    #38992901
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ключеров АлександрСделал через PostMessage.
Это не поможет если у тебя идёт падение на менеджере памяти без синхронизации. И сделает
только хуже если у тебя нет понимания работы потоков в целом.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Обращение к элементам форм из потоков
    #38992960
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovКлючеров Александркак правильно обращаться к форме из потока
Посылкой ей сообщения через SendMessage() или PostMessage().


Посылкой ей сообщения через SendMessageTimeout() или PostMessage().
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Обращение к элементам форм из потоков
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]