PDA

View Full Version : سوال: قطع ترد بعد بستن نرم افزار



hellboyfa
چهارشنبه 11 بهمن 1391, 19:49 عصر
سلام دوستان من یه نرم افزار طراحی کردم وبا فشردن یه باتن یه ترد شروع به کار میکنه ولی موقعی که ترد هنوز کارش تموم نشده برنامه رو می بندم برنامه بسته میشه ولی ترد همچنان کار میکنه یه راهنمایی می کنید که چه جوری میتونم ترد رو موقعی که برنامه بسته میشه متوقفش کنم ؟

danialafshari
چهارشنبه 11 بهمن 1391, 20:22 عصر
سلام
فکر می کنم با کد Abort() کارتون راه بفته:
Thread t = new Thread(ترید);
t.Abort();
می تونید با کد زیر هم برنامه رو ببندید:
Application.ExitThread();
موفق باشید

the king
چهارشنبه 11 بهمن 1391, 20:31 عصر
سلام دوستان من یه نرم افزار طراحی کردم وبا فشردن یه باتن یه ترد شروع به کار میکنه ولی موقعی که ترد هنوز کارش تموم نشده برنامه رو می بندم برنامه بسته میشه ولی ترد همچنان کار میکنه یه راهنمایی می کنید که چه جوری میتونم ترد رو موقعی که برنامه بسته میشه متوقفش کنم ؟

برای این پاسخگویی اون 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;
}
}

ara_tz
چهارشنبه 11 بهمن 1391, 22:08 عصر
سلام
میتونی خاصیت BackGroundworker اون thread رو برابر true قرار بدی اینطوری وقتی aplication بسته شه thread هم بسته میشه