PDA

View Full Version : سؤال درباره Dispatcher و دسترسی به کنترل های فرم اصلی از یک Thread دیگر



smt1383
سه شنبه 17 آبان 1390, 19:45 عصر
با سلام خدمت دوستان
یک سؤال داشتم. فرض در فرم اصلی، یک کنترلی داشته باشیم به نام myControl که متدی داره به نام ViewText که یک مقدار string را گرفته و در myControl نشان میدهد. همچنین یک delegate به نام ViewTextDelegate که نماینده متد ViewText است. حال اگر بخواهیم از یک Thread دیگر این متد را فراخوانی کنیم به دو روش می توان عمل کرد:
روش اول: استفاده از dispatcher خود فرم اصلی به شکل زیر:



if (this.Dispatcher.Thread==System.threading.Thread.C urrectThread)
{
mycontrol.ViewText("Sample Text");
}
else
{
this.Dispatcher.BeginInvoke(new ViewTextDelegate(ViewText),new object[]{"Sample Text"};}

روش دوم : استفاده از dispatcher خود کنترل myControl: دقیقا مانند روش بالا است فقط به جای this.Dispatcher از myControl.Dispatcher استفاده می کنیم.

هر دو روش بالا جواب می دهد. حال سؤال من این است که تفاوت این و روش در چیست و کدامیک بهتر و اصولی تر است؟
ممنون