| gkimirti | 18.02.2004 - 09:03:40 |
unit create_thread; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TFrmCreateThread = class(TForm) Button1: TButton; Button2: TButton; Label1: TLabel; Label2: TLabel; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var FrmCreateThread: TFrmCreateThread; hThr1, hThr2: THandle; implementation {$R *.DFM} procedure Thread1; var i: Integer; begin for i := 1 to 100 do begin FrmCreateThread.Label1.Caption := IntToStr(i); sleep(50); end; end; procedure Thread2; var i: Integer; begin for i := 1 to 100 do begin FrmCreateThread.Label2.Caption := IntToStr(i); sleep(50); end; end; procedure TFrmCreateThread.Button1Click(Sender: TObject); begin Createthread(nil, 0, @Thread1, nil, 0, hThr1); end; procedure TFrmCreateThread.Button2Click(Sender: TObject); begin Createthread(nil, 0, @Thread2, nil, 0, hThr2); end; procedure TFrmCreateThread.FormCreate(Sender: TObject); begin terminateThread(hThr1, 9999); terminateThread(hThr2, 9999); end; end. form uzerindeiki buton ve iki label var butonlardan birine basıp ardından digerine basarsanız iki dongu birbirinden bagımsız saymaya baslar normalde butonların olaylarını kullanınca birinciye bastıktan sonra ikinciye basıldıgı anda birinci askıya alınıp ikinci saymaya baslıyor bitince birinciye geri donuyor herneyse bu yapıyı ben de anet te bir elemanın tavsiyesi ile kullandım gercekten basitligiyle kullanımı cok kolay geldi tabi buna alternatif kendi thread nesnenizi de oturup yazabilirsiniz daha detaylı bilgi icin http://www.pergolesi.demon.co.uk/prog/threads/ToC.html | |
| NetZero | 20.10.2004 - 20:42:26 |
| //S.A yukarıda ki kod çalışmıyor..Ne kadar kasarsanız kasın çalışmıyor..bazı düzenlemeler yaptım..isinizi gorecektir..Gkimirtiye teşekkürü bir borç bilirim.
unit Unit1;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TfrmThreadCreate = class(TForm) Label1: TLabel; Label2: TLabel; Button1: TButton; Button2: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure FormCreate(Sender: TObject); end; TFMSn = procedure; var frmThreadCreate: TfrmThreadCreate; hThr1, hThr2: THandle; DD, EE : TFMSn; implementation {$R *.DFM} procedure thread1; var n: Integer; begin for n:=1 to 100 do begin frmThreadCreate.Label1.Caption := IntToStr(n); sleep(50); end; end; procedure thread2; var i: Integer; begin for i:=1 to 100 do begin frmThreadCreate.Label2.Caption := IntToStr(i); sleep(50); end; end; procedure TfrmThreadCreate.Button1Click(Sender: TObject); begin @DD := @thread1; Createthread(nil, 0, @DD, nil, 0, hThr1); end; procedure TfrmThreadCreate.Button2Click(Sender: TObject); begin @EE := @thread2; Createthread(nil, 0, @EE, nil, 0, hThr2); end; procedure TfrmThreadCreate.FormCreate(Sender: TObject); begin terminateThread(hThr1, 9999); terminateThread(hThr2, 9999); end; end. | |
| gkimirti | 21.10.2004 - 09:06:19 |
| TFMSn nedir burda?
ayrıca yukardaki kod sadece delphi5 ve win2000 icin test edildi, digerlerinde sorun cıkartabilir... kapsamlı bir thread islemi yapılacaksa bu sekilde yapılmaması gerekir zaten inceledigin icin sagol :) | |