PDA

View Full Version : انجام دو کار همزمان در یک ترد



ehsan_faal
دوشنبه 12 شهریور 1397, 17:48 عصر
سلام.
خیلی سعی کردم عنوان تاپیک رو بهترین عنوان ممکن انتخاب کنم اما این بهترین تلاشم بود.
قضیه از این قراره که من یه برنامه کنسول نوشتم که یه سری کار انجام میده به صورت نامتناهی، حالا در این بین اگه به یه اکسپشن بخوره میاد یه آزیر میزنه و میره داخل یه حلقه و برای حدود ۶۰ ثانیه تا اجرای مجدد برنامه تو همین حالت میمونه، من میخوام وقتی داره این ۶۰ ثانیه سپری میشه اگه کاربر کلید مثلا m رو زد آزیر میوت بشه، یا اگه کلید s فشار داده شد زمان باقیمانده از ۶۰ ثانیه skip بشه، هر کدوم از این کارها رو به تنهایی شاید بتونم انجام بدم اما این که چجوری یه چیزی مثله watchdog برای این دو تا کار خاص بذارم رو نمیدونم،در واقع یه الگوریتم میخوام که بتونه درک روند حل مساله رو راحت تر کنه برام.
این هم بخشی از کدمه.

Begin
//Begining Main Code:
placeItRight;
While True Do
Begin
Try
DoSSH;
Except
On E: Exception Do
Begin
CkSsh_Disconnect(Ssh);
CkSsh_Dispose(Ssh);
Alert;
AlertWindowSetup('Something''s happened. Last Uptime: ' + lastUptimeFetched);
Writeln('Power Outage In TKA Main Station');
Writeln('You should immediately Call');
For Counter := 60 Downto 0 Do
Begin
Write(Format('Waiting %d Seconds To re-Execute This Program.', [Counter]), #13);
Sleep(1000);
ClrEol;
End;
PlaySound(nil, 0, SND_NODEFAULT Or SND_ASYNC Or SND_LOOP Or SND_MEMORY);
Window(-1, 0, 0, 0);
ClrScr;
End;
End;
End;
End.