نوشته شده توسط
hellboyfa
سلام دوستان من یه نرم افزار طراحی کردم وبا فشردن یه باتن یه ترد شروع به کار میکنه ولی موقعی که ترد هنوز کارش تموم نشده برنامه رو می بندم برنامه بسته میشه ولی ترد همچنان کار میکنه یه راهنمایی می کنید که چه جوری میتونم ترد رو موقعی که برنامه بسته میشه متوقفش کنم ؟
برای این پاسخگویی اون Thread در حد مطلوب باشه در روال اون Thread مدام پیگیر خاتمه کار برنامه باشید، فرضا بر اساس مقدار یک متغیر.
در مورد بعضی عملیات ها که نمیشه بصورت تکه تکه انجام شون داد اینکار مشکله اما اگر روال کار رو بتوانید تکه تکه انجام بدید Thread تون
فورا می تونه عملیات رو رها کنه. در رخداد FormClosing می توانید این مورد رو به Thread یادآوری کنید که وقت ات تموم شده :
public partial class Form1 : Form
{
private bool canceled;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
canceled = false;
Thread t = new Thread(ThreadProc);
t.Start();
}
private void ThreadProc(object value)
{
double x = 0;
while (x < 1000000)
{
x += 0.000001;
if (canceled)
return;
}
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
canceled = true;
}
}