Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Обращение к элементам форм из потоков / 6 сообщений из 6, страница 1 из 1
24.06.2015, 11:16
    #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
24.06.2015, 12:15
    #38991495
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к элементам форм из потоков
Ключеров Александркак правильно обращаться к форме из потока
Посылкой ей сообщения через SendMessage() или PostMessage().
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
24.06.2015, 12:17
    #38991497
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к элементам форм из потоков
Ключеров АлександрCreateThread
Кстати, в описании этой функции написано, что ею нельзя пользоваться в программах,
использующих RTL. Надо использовать beginthread(ex).
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
25.06.2015, 16:21
    #38992886
Обращение к элементам форм из потоков
Спасибо. Сделал через PostMessage. В гугле ничего другого не нашел.
Оставил пока не CreateThread.
...
Рейтинг: 0 / 0
25.06.2015, 16:30
    #38992901
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к элементам форм из потоков
Ключеров АлександрСделал через PostMessage.
Это не поможет если у тебя идёт падение на менеджере памяти без синхронизации. И сделает
только хуже если у тебя нет понимания работы потоков в целом.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
25.06.2015, 17:10
    #38992960
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к элементам форм из потоков
Dimitry SibiryakovКлючеров Александркак правильно обращаться к форме из потока
Посылкой ей сообщения через SendMessage() или PostMessage().


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


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