Проблема с TThread
От: Begemote  
Дата: 11.08.04 09:32
Оценка:
Помогите пож-та, решить такую проблему:
есть основной поток, т.е. создавший главное окно.
Он решает какую-то задачу и задумался надолго.
На клавиши, да и на другие события не реагирует.
Юзеру же необходима возможность отмены той задачи,
которой занимается основной поток (например, построение отчетов)
Он нажимает ESC и хочет оменить всё.
Так вот я создаю 2-ой поток, присоединяю
очередь ввода основного потока к этому
и вхожу в цикл GetMessage. Насколько я понимаю,
все сообщения ввода клавиатурного теперь должны попасть в очередь
2-го потока и он уже отменит задачу.
Выглядит все примерно так:


procedure TBreakThread.Execute;
var
 msg: TMsg;
begin
 if not AttachThreadInput(MainThreadID,SecThreadId,true) then
   exit;
 while GetMessage(msg, 0, 0, 0) do begin
  case msg.message of
   WM_KEYDOWN : какое-то действие
  end;  
 end;
end;


Так вот никаких сообщений GetMessage не возвращает. Непонятно почему.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.