vaheeed
شنبه 15 مهر 1391, 20:04 عصر
من داخل فرم wpf میخوام با ترد کار کنم در برنامه های ویندوزی یه نخ تعریف میکردم و اگه میخواستم در ظاهر برنامه تغییری ایجاد کنم باید از تابع invoke استفاده میکردم حالا اساتید گفتن باید از dispatcher استفاده کنم طبق چیزایی که خوندم این کد رو نوشتم
System.Threading.Thread thread = new System.Threading.Thread(new System.Threading.ThreadStart(delegate()
{
grid1.Dispatcher.Invoke(System.Windows.Threading.D ispatcherPriority.Normal,new Action(delegate()
{
//V0.Stroke = Brushes.Green;
try
{
foreach (Shape c in grid1.Children)
{
if (c is Ellipse && c.Name == "V" + ((i - 1).ToString()))
{
Ellipse ellnew = c as Ellipse;
ellnew.Stroke = Brushes.Green;
ellnew.Fill = Brushes.Yellow;
}
}
}
catch
{ }
}
));
}
));
ولی نمیدنم چرا وقتی اینو میزارم هیچ تغییری پیدا نمیکنه !!! اون خطی که الان به عنوان توضیح گذاشتم اگه تنها باشه کار میکنه ولی چرا کلش کار نمیکنه؟؟
System.Threading.Thread thread = new System.Threading.Thread(new System.Threading.ThreadStart(delegate()
{
grid1.Dispatcher.Invoke(System.Windows.Threading.D ispatcherPriority.Normal,new Action(delegate()
{
//V0.Stroke = Brushes.Green;
try
{
foreach (Shape c in grid1.Children)
{
if (c is Ellipse && c.Name == "V" + ((i - 1).ToString()))
{
Ellipse ellnew = c as Ellipse;
ellnew.Stroke = Brushes.Green;
ellnew.Fill = Brushes.Yellow;
}
}
}
catch
{ }
}
));
}
));
ولی نمیدنم چرا وقتی اینو میزارم هیچ تغییری پیدا نمیکنه !!! اون خطی که الان به عنوان توضیح گذاشتم اگه تنها باشه کار میکنه ولی چرا کلش کار نمیکنه؟؟