se8820726
پنج شنبه 11 اردیبهشت 1393, 21:20 عصر
سلام
تو فرم ها وقتی میخواستیم یه thread ایجاد کنیم از کامپوننت backgroundWorker استفاده میکردیم که میتونستیم راحت پارامترهامونو از طریقش به تابعی که باید در یک thread جاداگانه اجرا بشه بفرستیم. همچنین یه event هم بنام RunWorkerCompleted داشت که وقتی thread متوقف میشد یا کارش تموم میشد اجرا میشد و کارهای لازم رو با توجه به مقدار بازگشتی انجام میداد.
خوب حالا از این component نمیشه تو یه کلاس استفاده کرد.
و از این نمونه کد استفاده میکنم:
using System.Threading;
public String f1()
{
Thread workerThread = new Thread(_f2);
workerThread.Start();
}
private void _p2()
{
// commands series 1
if (condition1) // must stop thread and returns some value
// commands series 2
if (condition2) // must stop thread and returns some value
}
خوب حالا اولین مشکل من اینه که اونجایی که condition1 چک میشه و مقدار true میگیره چطوری function _p2 رو خاتمه بدیم و مقداری رو برگردونیم ؟؟
همچنین این مشکل رو تو قسمت condition2 هم دارم.
دومین مشکل هم اینه که زمانی که function _p2 تموم میشه چجوری یه event فراخوانی کنم که نتیجه رو پردازش کنه ؟؟ (مثل رویداد RunWorkerCompleted تو فرم ها)
تو فرم ها وقتی میخواستیم یه thread ایجاد کنیم از کامپوننت backgroundWorker استفاده میکردیم که میتونستیم راحت پارامترهامونو از طریقش به تابعی که باید در یک thread جاداگانه اجرا بشه بفرستیم. همچنین یه event هم بنام RunWorkerCompleted داشت که وقتی thread متوقف میشد یا کارش تموم میشد اجرا میشد و کارهای لازم رو با توجه به مقدار بازگشتی انجام میداد.
خوب حالا از این component نمیشه تو یه کلاس استفاده کرد.
و از این نمونه کد استفاده میکنم:
using System.Threading;
public String f1()
{
Thread workerThread = new Thread(_f2);
workerThread.Start();
}
private void _p2()
{
// commands series 1
if (condition1) // must stop thread and returns some value
// commands series 2
if (condition2) // must stop thread and returns some value
}
خوب حالا اولین مشکل من اینه که اونجایی که condition1 چک میشه و مقدار true میگیره چطوری function _p2 رو خاتمه بدیم و مقداری رو برگردونیم ؟؟
همچنین این مشکل رو تو قسمت condition2 هم دارم.
دومین مشکل هم اینه که زمانی که function _p2 تموم میشه چجوری یه event فراخوانی کنم که نتیجه رو پردازش کنه ؟؟ (مثل رویداد RunWorkerCompleted تو فرم ها)