2016-02-08 3 views
1

Может ли кто-нибудь помочь мне в понимании рабочих потоков в VC++ (MFC)? Ниже моя WorkerThread функциявызов функции Beginwaitcursor из рабочего потока в MFC

UINT ThreadFunc(LPVOID pParam) 
{ 
// some initialization... etc.. 

AfxGetApp()->BeginWaitCursor(); 

... 
.. 
/// some operations 

AfxGetApp()->End WaitCursor(); 

} 

Это нормально для вызова функций WaitCursor() из рабочего потока?

+1

Это «хорошо», но он не будет иметь предполагаемого эффекта. Нить пользовательского интерфейса просто изменит их обратно. Лучшим решением является отображение элемента управления в самом окне/диалоге, который указывает, что что-то происходит в фоновом режиме. –

+0

В MFC вы можете использовать 'CWaitCursor x;', и это делается, когда 'x' выходит за рамки. Однако он по-прежнему ничего не делает по причинам, объясненным ранее. –

ответ

1

Документация, доступная для BeginWaitCursor и EndWaitCursor, не упоминает о проблемах, связанных с резьбой.

Единственное, что упоминается,

Действия BeginWaitCursor не всегда эффективны вне одного обработчика сообщений, как и другие действия, такие как обработка OnSetCursor, может изменить курсор.

Другие темы могут также изменить курсор, пока рабочий рабочий работает.