Valdemar
Дата: 12.10.2006 12:47:13
Такой вопрос,
объявил переменную как Theard
создал поток и внем запускаю выполнение запроса, при этом запрос не являеться свойством потока, а принадлежит форме. запрос возращает данные для отчета. в отдельный поток запустил, чтобы приложение не показывало сообщение (неотвечает). Но проблема в том, что теперь отчеты не формируються, в чем может быть проблема?
Anatoly Podgoretsky
Дата: 12.10.2006 14:41:11
И как ты это делаешь?
Valdemar
Дата: 12.10.2006 15:40:35
TPiThread = class(TThread)
private
protected
procedure Execute; override;
end;
Function Proc_EXE(i:integer): Boolean;
procedure TForm_Config_ONCH.Start_Z();
Begin
PiThread := TPiThread.Create(True);
PiThread.FreeOnTerminate := True;
PiThread.Priority := tpLower;
PiThread.Resume;
end;
procedure TForm_Config_ONCH.Stop_Z();
Begin
if zapros_active=True then
Begin
if Assigned(PiThread) then PiThread.Terminate;
Application.Terminate;
End;
zapros_active:=False;
end;
procedure TPiThread.Execute;
Begin
Form_Config_ONCH.RABOTA;
End;
Moloh
Дата: 12.10.2006 15:40:36
Обычно для работы с поток требуеться доп. подключение.
Синхранизируй поток, для начала. С каким приоритетом создаешь?
Dimitry Sibiryakov
Дата: 12.10.2006 16:25:36
| Valdemar |
if Assigned(PiThread) then PiThread.Terminate;
|
Похоже, ты не в курсе что Terminate потока на самом деле его не убивает
а только устанавливает флаг который надо бы периодически проверять...
Posted via ActualForum NNTP Server 1.3
Valdemar
Дата: 12.10.2006 17:16:26
нет ну ладно, хотите сказать что он на самом деле не убиваеться и висит, поэтому приложение не выводит результат?
Petro123
Дата: 12.10.2006 17:44:36
Anatoly Podgoretsky
Дата: 12.10.2006 19:47:54
Начитал Архангельского, нафига тебе поток, если вся работа ведется в основном потоке. И про Terminate тебе сказали, что это не убивает поток, а только устанавливает флаг, который ты не анализируешь.
А может ну его нафиг эти потоки если основы не известны и опыта нет? Ты так намертво все повесишь.
mikolas
Дата: 13.10.2006 06:55:26
Попробуй поставить прогу APIS32 и посмотри где создаётся поток, где убивается, где терминатится. Или посмотри счётчик потоков Ctrl+Shift+Esc и отслеживай по F8 или F7 в отладчике.
Valdemar
Дата: 13.10.2006 07:27:54
| автор |
Начитал Архангельского, нафига тебе поток, если вся работа ведется в основном потоке. И про Terminate тебе сказали, что это не убивает поток, а только устанавливает флаг, который ты не анализируешь.
А может ну его нафиг эти потоки если основы не известны и опыта нет? Ты так намертво все повесишь. |
вот это верно, вот поег=нтому сюда и пришел чтобы спросить совет, как и где?