hmahdavi921
دوشنبه 22 آبان 1396, 16:30 عصر
سلام
یک برنامه کوچیک دارم که بایدبه صورت همزمان 11 متد رو اجرا کنه و به هنگام اتمام کار در هر یک از متد ها یک متن رو به متنهایی که در textbox وجود داره اضافه بکنه.
در رویداد کلیک یک باتن این کد رو نوشتم
Parallel.Invoke( () => GetCheapestFlightTehran(),
() => GetCheapestFlightTabriz(),
() => GetCheapestFlightMashhad(),
() => GetCheapestFlightKish(),
() => GetCheapestFlightAhvaz(),
() => GetCheapestFlightIsfahan(),
() => GetCheapestFlightShiraz(),
() => GetCheapestFlightGeshm(),
() => GetCheapestFlightAbadan(),
() => GetCheapestFlightKermanshah(),
() => GetCheapestFlightBandarAbbas()
);
و در هر یک از متدهای فراخوانی شده در بالا برای نشون دادن متن از این کد استفاده کردم
txtResult.Invoke((Action)(() =>
{
txtResult.AppendText(DateTime.Now.ToString("HH:mm:ss") + @" Tehran Count = " + flightsTemp.Count + "\n");
txtResult.AppendText(Environment.NewLine);
}));
حالا چند تا مشکل داریم : یکی اینکه به محظ شروع به کار برنامه کلا نمیشه پنجره برنامه رو تکون داد و مثل موقعی که یک برنامه هنگ میکنه میشه. و مشکل دیگه هم اینه که متن textbox رو به موقع و درست آپدیت نمیکنه یا چند دقیقه بعد آپدیت میکنه یا یک سری متن ها رو نشون نمیده و خلاصه درست نیست.
فکر میکنم در استفاده از parallel یک موردی وجود داره که رعایت نشده . دوستانی که در این مورد تجربه دارن لطفا راهنمای کنن.
با تشکر از همه دوستان
یک برنامه کوچیک دارم که بایدبه صورت همزمان 11 متد رو اجرا کنه و به هنگام اتمام کار در هر یک از متد ها یک متن رو به متنهایی که در textbox وجود داره اضافه بکنه.
در رویداد کلیک یک باتن این کد رو نوشتم
Parallel.Invoke( () => GetCheapestFlightTehran(),
() => GetCheapestFlightTabriz(),
() => GetCheapestFlightMashhad(),
() => GetCheapestFlightKish(),
() => GetCheapestFlightAhvaz(),
() => GetCheapestFlightIsfahan(),
() => GetCheapestFlightShiraz(),
() => GetCheapestFlightGeshm(),
() => GetCheapestFlightAbadan(),
() => GetCheapestFlightKermanshah(),
() => GetCheapestFlightBandarAbbas()
);
و در هر یک از متدهای فراخوانی شده در بالا برای نشون دادن متن از این کد استفاده کردم
txtResult.Invoke((Action)(() =>
{
txtResult.AppendText(DateTime.Now.ToString("HH:mm:ss") + @" Tehran Count = " + flightsTemp.Count + "\n");
txtResult.AppendText(Environment.NewLine);
}));
حالا چند تا مشکل داریم : یکی اینکه به محظ شروع به کار برنامه کلا نمیشه پنجره برنامه رو تکون داد و مثل موقعی که یک برنامه هنگ میکنه میشه. و مشکل دیگه هم اینه که متن textbox رو به موقع و درست آپدیت نمیکنه یا چند دقیقه بعد آپدیت میکنه یا یک سری متن ها رو نشون نمیده و خلاصه درست نیست.
فکر میکنم در استفاده از parallel یک موردی وجود داره که رعایت نشده . دوستانی که در این مورد تجربه دارن لطفا راهنمای کنن.
با تشکر از همه دوستان