привет друзья У меня есть сомнения относительно количества потоков. У меня есть код, написанный ниже для нитикак получить счетчик для завершенных потоков?
Procedure Mainthread.execute;
var
I : integer;
ScannerCh : array of ScannerChild; //array of ScannerChild
IpList : TStringlist;
IPs: Integer; //ipcount is count of iplist
Begin
IpList:=TStringList.Create;//creating stringlist
IPs := IpList.Count; //Ipcount is given value of iplists count
SetLength(ScannerCh, IPs); //Setting length of scannerch as ipcount
I:=0;
Repeat
While getthreadscount(getcurrentprocessid) >= tcount + 1(for main thread + Scannerch threads) do //Checking if is greater than tcount(thread input) by user
Sleep(30);
ScannerCh[I]:=ScannerChild.Create(True, IpList[i]);
ScannerCh[I].FreeOnTerminate:=True;
ScannerCh[I].LvHostname := LvHosts;
ScannerCh[I].Resume;
I:=I+1;
Sleep(20); //Sleep after each thread is created so that threads will enter critical section properly
until I = IPs;
end;
Scannerchild нить выполняет некоторые работы. мой код работает отлично, если у меня есть только эти потоки в процессе. Если есть некоторые другие потоки, запущенные, то мне будет сложно получить threadcount с помощью функции getthreadscount, и я не узнаю, какие потоки заканчиваются функцией getthreadcount. так как я могу улучшить свой код для многих потоков. Моя логика заключается в том, когда поток scannerch завершается, он должен уменьшать переменную count, а когда она создается, она должна увеличивать счетчик. так что это не будет проблемой, если другие потоки будут прекращены или нет. я просто хочу иметь дело с прерыванием потока сканера и нужно получить количество экземпляров запущенных потоков сканера. так что я ставлю переменную count вместо getthreadscount, и моя проблема будет решена.
Я слышал о TNotifyEvent, но не знаю, как его использовать –
Серьезно? Метод формы Button1Click является примером TNotifyEvent. Посмотрите это в OLH. В Delphi вы можете определить свои собственные типы событий, если хотите. – MartynA
@MartynA +1 Но большинство новичков * знают * «TNotifyEvent» только из двойного щелчка элемента управления и магически получая декларацию метода; o) –