![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
||||
|
||||
|
Вобщем мне нужно запускать 10 потоков с разными действиями,
но они запускаются часто поэтому мохинации рода IF x=true then не подойдут, может быть сбой, так вот нужен совет делать 10 разных типов таких => Код:
type TMyThread = class(TThread) private protected procedure Execute; override; public constructor Create; overload; end; или можно иначе? |
|
#2
|
||||
|
||||
|
На конструкторе передаешь поинтер на нужную процедуру, а в заоверрайденой процедуре Execute вызываешь по этому поинтеру нужную функцию.
|
|
#3
|
||||
|
||||
|
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TAvatarThread = class(TThread)
private
FDoNumber: Integer;
protected
procedure Execute; override;
public
constructor Create(ADoNumber: Integer);
end;
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{ TAvatarThread }
constructor TAvatarThread.Create(ADoNumber: Integer);
begin
inherited Create(True);
FreeOnTerminate:=True;
FDoNumber:=ADoNumber;
Resume;
end;
procedure TAvatarThread.Execute;
begin
case FDoNumber of
1: begin
end;
2: begin
end;
// ...
10: begin
end;
end;
end;
{ TForm1 }
procedure TForm1.FormCreate(Sender: TObject);
begin
TAvatarThread.Create(1);
TAvatarThread.Create(2);
// ...
TAvatarThread.Create(10);
end;
end. |
|
#4
|
||||
|
||||
|
Уж тогда, наверное, лучше воспользоваться функцией CreateThread...
|
|
#5
|
||||
|
||||
|
Код:
они запускаются часто поэтому мохинации рода IF x=true the |
|
#6
|
||||
|
||||
|
Разъясни получше, что за коллизии возникают?
|
|
#7
|
||||
|
||||
|
ну если они завпустятся подряд сразу
то сначало FDoNumber:=1; а другой в это время изменит на FDoNumber:=2; и запустится дважды 2 функция |