type
TPingThread = class(TThread)
private
{ Private declarations }
protected
procedure Execute; override;
procedure Pinging;
public
mIP:string;
mId:Integer;
constructor Create(Suspend:Boolean;Id:Integer;ip:string);
destructor Destroy; override;
end;
var
PingServ: TPingServ;
TikTime:Cardinal;
MyThread:array of TPingThread;
PingInterval:Integer;
سلام
من در پروژه ای احتیاج دارم یک تعداد کامپیوتر را پینگ کنم و نتیجه را در دیتابیس ذخیره کنم. تعداد کامپیوترها ثابت نیست و لیست آی پی آنها در دیتابیس ذخیره میشود.
من برای Ping گرفتن یک thread طراحی کرده ام که موقع Create کردن IP و یک Id (که مربوط به دیتابیس است) به آن ارسال می کنم. در این ترد با یک دوره تناوب مثلا یک دقیقه کامپیوتر کلاینت را پینگ می کنم.
اگر فقط یک بار از Thread استفاده کنم مشکلی نیست. اما من باید thread را به صورت آرایه پویا تعربف کنم و در ابتدای اجرای برنامه با توجه به تعداد رکوردها در دیتابیس تعداد آن را مشخص کنم.
اتفاق عجیبی که رخ می دهد این است که بعد از چند سیکل (2 یا 3 بار) کم کم داخل thread.mIP و Thread.mId مقادیر بی معنی دیده می شود!!
آیا نباید کلاس تردها را به صورت آرایه استفاده کرد؟
ظاهرا مقادیر متغییر ها در تردها تداخل میکند!
در ضمن برنامه من Windows Service App است