PDA

View Full Version : ارسال فرمان از thread به thread ديگر



youngold
پنج شنبه 05 مرداد 1391, 16:42 عصر
براي ارسال تابع يا فرماني از thread به thread ديگر طوري كه تابع يا فرمان پاس داده شده به طور كل در thread دوم اجرا شود
چه راهي پيشنهاد ميكنيد؟

tooraj_azizi_1035
پنج شنبه 05 مرداد 1391, 19:41 عصر
سلام




using System;
using System.Threading;
class Test
{
static void Main()
{
Thread newThread =
new Thread(new ThreadStart(Work.DoWork));
newThread.Start();
}
}
class Work
{
Work() {}
public static void DoWork() {}
}

youngold
پنج شنبه 05 مرداد 1391, 23:19 عصر
سلام




using System;
using System.Threading;
class Test
{
static void Main()
{
Thread newThread =
new Thread(new ThreadStart(Work.DoWork));
newThread.Start();
}
}
class Work
{
Work() {}
public static void DoWork() {}
}



نه دوست عزيز، اينو كه ميدونيم قراره در دو thread متمايز در حال اجرا يك thread به thread ديگه يك سيگنال يا هر چي... بده كه فلان تابع در thread دوم اجرا بشه يا به عبارت ديگه از thread اول تابعي رو فراخواني كنيم طوري كه با thread دوم اجرا بشه

the king
جمعه 06 مرداد 1391, 03:00 صبح
نه دوست عزيز، اينو كه ميدونيم قراره در دو thread متمايز در حال اجرا يك thread به thread ديگه يك سيگنال يا هر چي... بده كه فلان تابع در thread دوم اجرا بشه يا به عبارت ديگه از thread اول تابعي رو فراخواني كنيم طوري كه با thread دوم اجرا بشه

مثال پیوستی رو ببینید، بجز Thread اصلی دو تا Thread اضافی داریم که مستقل از هم هستند.
یک کلاس ساخته ام به نام MySignal که هر کدوم از این دو Thread یک نمونه شیء از این MySignal رو دارند.
با این MySignal میشه به هر Thread سیگنالی فرستاد که فلان Job رو انجام بده.
هر Thread ای گوش به زنگه که شیء MySignal اش سیگنالی رو دریافت کنه. هر سیگنال می تونه
فرمان جدیدی رو به Thread منتقل کنه.

مثالی که پیاده سازی شده اینه، Thread اصلی که فرم رو اداره می کنه با فشار دادن دکمه ها
به Thread اول درخواستی رو ارسال می کنه. Thread اول هم بر اساس درخواست دریافت شده
فرمانی رو به Thread دوم ارسال می کنه. Thread دوم بر اساس فرمان دریافت شده موقعیت
یک نقطه رو عوض می کنه. Thread اصلی چند بار در هر ثانیه موقعیت یک عکس رو بر اساس
اون نقطه جابجا می کنه. نتیجه جابجا شدن تصویره، در حالی که هر کدوم از این سه Thread
صرفا بخشی از عملیات رو انجام داده اند.

یعنی ما دکمه ها رو در Thread اصلی فشار می دهیم، Thread اصلی به Thread اول
درخواست میده که دکمه فشار داده شده، Thread اول فرمان دیگه ای رو به Thread دوم میده که
موقعیت نقطه رو جابجا کن و Thread دوم نقطه رو جابجا می کنه. Thread اصلی هم که مدام
تصویر رو به موقعیت نقطه جابجا می کنه.

90278