![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вопрос про нити!!!!! [D5, Win95/98]
Anton V © (2002-06-26 11:00:00)У меня большая проблема. Я хочу, чтобы в то время, как одна нить выполняла бы длительную операцию, лругая бы позволяла мне творить с формой всё, что захочу (сворачивать, разворачивать и т. д. ). Нити я создавал через File-->New-->TThread Object [Delphi 5]
Внук (2002-06-26 11:34:00) [1]Тут и смотреть нечего, весь исполняемый код дополнительной нити выполняется в Synchronize, то есть в контексте главного потока, поэтому считай, что второй нити и нет вовсе... Надо грамотно сихнронизировать (а надо ли вообще?)
Игорь Шевченко (2002-06-26 11:31:00) [2]Неграмотно. Недавно обсуждалось, что Synchronize заставляет выполняться код в ОСНОВНОМ потоке, а не в Thread"е. Все преимущество параллельной работы сводится на нет.
Вам надо пересмотреть архитектуру приложения. Хороший пример работы с потоками есть в книжке Тейксейры и Пачеко "Delphi 5 руководство разработчика"
Anton V (2002-06-26 11:27:00) [3]А вот код к вопросу
unit MyThread:
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ComCtrls, Comp1;
type
TypeMyThread = class(TThread)
private
{ Private declarations }
protected
procedure CompareTwoFiles;
procedure Execute; override;
end;
implement
procedure TypeMyThread.CompareTwoFiles;
begin
*******
end;
procedure TypeMyThread.Execute;
Begin
Synchronize(CompareTwoFiles);
End;
unit MainUn:
*********
implementation
Uses TMyThread, MinMax;
Var
MyThread:TypeMyThread;
DoWork:ThreadMinMax;
procedure TForm1.Button3Click(Sender: TObject);
begin
MyThread:=TypeMyThread.Create(False);
DoWork:=ThreadMinMax.Create(False);
end;