هنگ کردن ریسمان یا thread
سلام
من تو برنامه ام از تعدادی دستور درون یک کلاس استفاده می کنم. و این کلاس رو برای اجرا شدن به یک ریسمان یا thread می فرستم. و برنامه هم اجرا می شه.
مشکل اینجاست که برنامه با کمی هنگ کردن (فرم برنامه هنگ می کند) جواب رو نشون میده (انگار از thread استفاده نکردی).
می خواستم بدونم thread هم ممکنه هنگ کنه ؟
کلاس :
public void th_translate()
{
this.Dispatcher.Invoke(DispatcherPriority.Normal, (Action)delegate{target.Text = "hello world";});
}
private void translate_Click(object sender, RoutedEventArgs e)
{
try
{
Thread t = new Thread(new ThreadStart(th_translate));
t.Start();
}
catch (Exception)
{
}
}
من برنامه رو با زبان سی شارپ wpf نوشتم. یکم فک کنم کدهاش فرق کنه.
لطفاً یک کمکی بکنید. ممنون
نقل قول: هنگ کردن ریسمان یا thread
شما از Thread استفاده کردی. ولی thread رو بلافاصله وصل کردی به threadی که UI رو لود میکنه!!!
شما باید قسمت محاسباتی رو توی thread انجام بدی. بعد وقتی خواستی نتیجه رو نمایش بدی، thread مربوط به UI رو invoke کنی.
نقل قول: هنگ کردن ریسمان یا thread
آقا محمد میشه این کار رو با مثال بفرمائید.
من چیزی متوجه نشدم، آخه تازه با این زبان دارم کار می کنم.
الان کجای کد رو باید تغییر بدم؟
ممنون
1 ضمیمه
نقل قول: هنگ کردن ریسمان یا thread
public void th_translate()
{
//Simulating translation process...
// Sending <toTranslate> to translation engine...
Thread.Sleep(5000);
var result = "hello world"; // taranslated text is sent babk.
this.Dispatcher.Invoke(DispatcherPriority.Normal,
(Action)delegate
{
this.translate.Content = "_Translate";
this.translationResult.Content = result;
this.translate.IsEnabled = true;
this.target.IsEnabled = true;
});
}
private void translate_Click(object sender, RoutedEventArgs e)
{
this.toTranslate = this.target.Text;
this.translationResult.Content = "Translating...";
this.translate.IsEnabled = false;
this.target.IsEnabled = false;
var t = new Thread(this.th_translate);
t.Start();
}
من با اجازه یه وفقه 5 ثانیه ای هم به برنامه اضافه کردم تا زمانی اتلاف بشه برای شبیه سازیِ ترجمه. یک مقدار هم به برنامه رنگ و لعاب دادم.
اگه سوالی بود باز هم در خدمت هستم
البه ناگفته نمونه که من در کل Task رو به Thread ترجیح میدم
نقل قول: هنگ کردن ریسمان یا thread
دستتون درد نکنه.
خیلی خیلی ممنون. من بازم اون مشکل رو دارم (فک کنم مشکل از برنامه باشه :اشتباه:). ولی به شما زحمت نمیدم.
همین که جواب سوال رو دادین ، خیلی لطف کردین.
ممنون :چشمک: