نمایش نتایج 1 تا 5 از 5

نام تاپیک: هنگ کردن ریسمان یا thread

  1. #1
    کاربر دائمی
    تاریخ عضویت
    آبان 1389
    محل زندگی
    ایران
    پست
    182

    Question هنگ کردن ریسمان یا 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 نوشتم. یکم فک کنم کدهاش فرق کنه.
    لطفاً یک کمکی بکنید. ممنون

  2. #2
    کاربر دائمی آواتار mohammad272005
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    تهران
    پست
    639

    نقل قول: هنگ کردن ریسمان یا thread

    شما از Thread استفاده کردی. ولی thread رو بلافاصله وصل کردی به threadی که UI رو لود میکنه!!!
    شما باید قسمت محاسباتی رو توی thread انجام بدی. بعد وقتی خواستی نتیجه رو نمایش بدی، thread مربوط به UI رو invoke کنی.

  3. #3
    کاربر دائمی
    تاریخ عضویت
    آبان 1389
    محل زندگی
    ایران
    پست
    182

    نقل قول: هنگ کردن ریسمان یا thread

    آقا محمد میشه این کار رو با مثال بفرمائید.
    من چیزی متوجه نشدم، آخه تازه با این زبان دارم کار می کنم.
    الان کجای کد رو باید تغییر بدم؟
    ممنون

  4. #4
    کاربر دائمی آواتار mohammad272005
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    تهران
    پست
    639

    نقل قول: هنگ کردن ریسمان یا 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 ترجیح میدم
    فایل های ضمیمه فایل های ضمیمه

  5. #5
    کاربر دائمی
    تاریخ عضویت
    آبان 1389
    محل زندگی
    ایران
    پست
    182

    نقل قول: هنگ کردن ریسمان یا thread

    دستتون درد نکنه.
    خیلی خیلی ممنون. من بازم اون مشکل رو دارم (فک کنم مشکل از برنامه باشه ). ولی به شما زحمت نمیدم.
    همین که جواب سوال رو دادین ، خیلی لطف کردین.
    ممنون

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •