فعال بودن تابع برای زمانی خاص
سلام
من با تردینگ میخوام بگم فلان تابع مثلا 4 ثانیه اجرا بشه.
چطور میتونم این کار کنم؟ آرگومانی چیزی ندیدم تو تابع هاش.
نقل قول: فعال بودن تابع برای زمانی خاص
نقل قول:
نوشته شده توسط
Mahmoud.Afrad
ترد را 4 ثانیه sleep کنید.
سلام
ترد main رو؟
بببنید من مثلا 10 تا ترد دارم و هر کدام یک زمان خاص داره. یکی 5 ثانیه یکی 10 یکی 20 ثانیه
میخوام بگم ترد یک 9 ثانیه مثلا اجرا باشه
تمام شد ترد 2 14 ثانیه اجرا بشه
این طور
نقل قول: فعال بودن تابع برای زمانی خاص
من میخوام یک تایع 10 ثانیه اجرا بشه و بره و تمام
همین
نقل قول: فعال بودن تابع برای زمانی خاص
هر جا سخن از زمان است نام timer می درخشد ، از نظر بنده استفاده از timer کاربرد بیشتری داره. تابع رو از داخل timer اجرا کن.
نقل قول: فعال بودن تابع برای زمانی خاص
داشم تو سوالت بی معنی تابع یه چیزه که یا یه کاری انجتم میده یا یه خروجی داره ولی اگه می خوای یه کار 4 سانیه اجرا بشه باید یه حلقه همراه با thread.sleep()استفاده کنی
نقل قول: فعال بودن تابع برای زمانی خاص
نقل قول:
نوشته شده توسط
mehdi zanjani
هر جا سخن از زمان است نام timer می درخشد ، از نظر بنده استفاده از timer کاربرد بیشتری داره. تابع رو از داخل timer اجرا کن.
امکان داره مثالی بزنید؟ متوجه بشیم
نقل قول: فعال بودن تابع برای زمانی خاص
نقل قول:
نوشته شده توسط
C#_best_Programmer
داشم تو سوالت بی معنی تابع یه چیزه که یا یه کاری انجتم میده یا یه خروجی داره ولی اگه می خوای یه کار 4 سانیه اجرا بشه باید یه حلقه همراه با thread.sleep()استفاده کنی
سلام
من فکر نکنم sleep به درد ما بخوره. چون شاید ترد کارش تمام هست و ترد دیگه تو حافظه نمونه و خاتمه پیدا کنه با sleep همچنان ترد وجود داره
نقل قول: فعال بودن تابع برای زمانی خاص
بيا اين كارو بكن
تابع رو با thread اجرا كن بعد يك تايمر رو فعال كن مثلا رو 4 ثانيه تايمر كه اجرا شد thread.abort رو اجرا كن
نقل قول: فعال بودن تابع برای زمانی خاص
بوسیله ترد: اول زمان خاتمه را محاسبه کنید و تا زمانی که زمان حال حاضر کوچکتر از زمان انقضا هست کاری رو انجام بدید:
private void button1_Click(object sender, EventArgs e)
{
Thread t = new Thread(new ThreadStart(MyMethode));
t.IsBackground = true;
t.Start();
}
private void MyMethode()
{
DateTime expirationTime = DateTime.Now.AddSeconds(4);
while (DateTime.Now < expirationTime)
{
// do somthings
}
}
نقل قول: فعال بودن تابع برای زمانی خاص
نقل قول:
نوشته شده توسط
Mahmoud.Afrad
بوسیله ترد: اول زمان خاتمه را محاسبه کنید و تا زمانی که زمان حال حاضر کوچکتر از زمان انقضا هست کاری رو انجام بدید:
private void button1_Click(object sender, EventArgs e)
{
Thread t = new Thread(new ThreadStart(MyMethode));
t.IsBackground = true;
t.Start();
}
private void MyMethode()
{
DateTime expirationTime = DateTime.Now.AddSeconds(4);
while (DateTime.Now < expirationTime)
{
// do somthings
}
}
سلام
2 تا مشکل هست. یکی abort کردن ترد هست و دومی اینکه اگر 100 تابع داشته باشیم باید 100 بار این موارد رو تعریف کنیم.
نقل قول: فعال بودن تابع برای زمانی خاص
من به یک همچنن چیزی نیاز دارم.
For 4 sec
{
T.Start()
next
T.Abort
}
1 ضمیمه
نقل قول: فعال بودن تابع برای زمانی خاص
سلام
اينو ببينضمیمه 101379
نقل قول: فعال بودن تابع برای زمانی خاص
نقل قول:
نوشته شده توسط
irpersian20
سلام
2 تا مشکل هست. یکی abort کردن ترد هست و دومی اینکه اگر 100 تابع داشته باشیم باید 100 بار این موارد رو تعریف کنیم.
abort برای چی؟ بعد از 4 ثانیه حلقه و در نتیجه ترد به کارش خاتمه میده.
با تایمر هم میتونید انجام بدید. در رویداد تیک تایمر کارهاتون رو انجام بدید و بعد تایمر رو استاپ و از بین ببرید:
System.Windows.Forms.Timer timer = new System.Windows.Forms.Timer();
timer.Interval = 4000;
timer.Tick += (object obj, EventArgs ea) =>
{
timer.Dispose();
// do somthing Here
};
timer.Start();
1 ضمیمه
نقل قول: فعال بودن تابع برای زمانی خاص
ضمیمه 101391
---------------------------------------------------------------------------------