> Проблема такая, программа обрабатывает данные и > одновременно с обработкой должна быть возможность работы с > интерфейсом... Как это сделать? Насколько я понимаю > необходимо запустить новый поток для обработки данных, > тогда программа висеть не будет? Пишу в Builder'e. Если > можно посмотреть исходники какие или есть дока по данной > теме буду очень благодарен. Заранее спасибо!
Потоки дело сурьёзное...
Часто выгода от них призрачная...
Если нужно, чтобы интерфейс приложения не висел во время обработки данных, тебе может помочь Application->ProcessMessages().
Пример (на Delphi, но ты поймёшь, imho)
procedure TForm1.Button1Click(Sender: TObject);
begin
If Button1.Tag <> 0 Then
Begin
Button1.Tag := 0;
Exit;
End;
Button1.Caption := 'Stop';
Repeat
Button1.Tag := Button1.Tag + 10;
Caption := IntToStr(Button1.Tag);
Application.ProcessMessages;
sleep(100);
Until Button1.Tag = 0;
Button1.Caption := 'Start';
Caption := '0';
end;
Суть примера поясняю — эдакий старт-стоповый таймер на одной кнопке с циклом обработки без потоков ;-) Ключевой элемент, используемый для отсановки обработки - поле TButton.Tag. В принципе, можно завести глобальную переменную под это дело.
Смотри тута. Читай все ветки ;-)
|