thread.pause -> thread.abort -> ERROOOOR
سلام
ببخشید اگه شاید بحث تکراری است.
در کار با thread ها اگر threadی را pause نماییم و قبل از اجرای مجدد آن( resume) کاربر از برنامه خارج شود برنامه اتمام پیدا نخواهد کرد و در حافظه باقی خواهد ماند. حال چه باید کرد تا هنگام بستن برنامه همه thread ها خاتمه یابند؟
نقل قول: thread.pause -> thread.abort -> ERROOOOR
توی فایل Program برنامه کد زیر رو اضافه کنید
Application.ThreadExit+=newEventHandler(Application_ThreadExit);
بعد متد زیر رو همونجا ایجاد کن و توش تمام thread ها رو ببند
privatevoid Application_ThreadExit(object sender, EventArgs e)
{
}
1 ضمیمه
نقل قول: thread.pause -> thread.abort -> ERROOOOR
برنامه را اینجا قرار می دهم اگه میشه اون رو بگیرید قسمت هایی رو که گفتید روی اون برام مشخص کنید.
در ضمن مشکل دیگری هم که وجود داشت اینه که اگه threadی pause بشه بعد abort بشه برنامه با مشکل مواجه میشه.
ممنون میشم اگه راهنمایی ام کنید.:لبخندساده:
1 ضمیمه
نقل قول: thread.pause -> thread.abort -> ERROOOOR
threading (windows form).rar
اگه بازم کارت راه نیفتاد بگو
نقل قول: thread.pause -> thread.abort -> ERROOOOR
خیلی ممنون که جوابمو دادید
البته یه مشکلی هست! اولا چطوری در program.cs ، به نخها دسترسی داشته باشم ؟
و حال اگر منظور شما اینه که قبل اتمام برنامه thread ها را یکی یکی abort کنم فکر کنم این روش درستش نباشه!! (البته اگه منظور شما این بوده باشه)
نقل قول: thread.pause -> thread.abort -> ERROOOOR
نقل قول:
نوشته شده توسط
black_wear
سلام
ببخشید اگه شاید بحث تکراری است.
در کار با thread ها اگر threadی را pause نماییم و قبل از اجرای مجدد آن( resume) کاربر از برنامه خارج شود برنامه اتمام پیدا نخواهد کرد و در حافظه باقی خواهد ماند. حال چه باید کرد تا هنگام بستن برنامه همه thread ها خاتمه یابند؟
دوست من فقط کافی در رویداد FormClosing کد زیر رو استفاده کنید تا همه Thread ها هم بسته بشن.
System.Environment.Exit(0);
یا علی
نقل قول: thread.pause -> thread.abort -> ERROOOOR
آقا مصطفی خیلی ممنون یکی از مشکلاتم حل شد .
ولی مشکل دیگه ام هنوز حل نشده کسی راه حل نداره؟
مشکل این بود: اگه threadی pause بشه بعد abort بشه برنامه با مشکل مواجه میشه.
ممنون میشم اگه راهنمایی ام کنید
راه حل خودم این بود که در قسمت مربوط به لغو THREAD این کد را بنویسم:
if (thread1.ThreadState == ThreadState.Suspended || thread1.ThreadState == ThreadState.SuspendRequested)
{
thread1.Resume();
thread1.Abort();
}
else
thread1.Abort();
و البته مشکل هم حل میشه ولی آیا راه درستش همینه؟!
نقل قول: thread.pause -> thread.abort -> ERROOOOR
کسی اینجا جواب سوال من را بلد نیست؟! :ناراحت: