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

نام تاپیک: پیغام خطای STA Thread در WPF

  1. #1

    پیغام خطای STA Thread در WPF

    با سلام
    در یک برنامه من در یک Thread دیگر یک نمونه از یک window می سازم و متد ShowDialog آنرا اجرا می کنم اما پیغام خطای زیر ظاهر می شود:

    The calling thread must be STA. Because many UI components require this

    در حالیکه من همین کار را در win app انجام می دهم و هیچ مشکلی بوجود نمی آید. چه چیزی باعث می شود که در WPF این پیغام ظاهر شود و چگونه می توان این مشکل را حل کرد؟ ممنون

  2. #2
    VIP آواتار مهدی فرزاد
    تاریخ عضویت
    خرداد 1403
    محل زندگی
    اهواز
    سن
    43
    پست
    1,154

    نقل قول: پیغام خطای STA Thread در WPF

    سلام
    شما باید به این شکل بکار ببرید
    Thread t = new Thread(ThreadProc);
    t.SetApartmentState(ApartmentState.STA);

    t.Start();

  3. #3

    نقل قول: پیغام خطای STA Thread در WPF

    ممنون از راهنماییتان. اما من از Thread استفاده نکرده ام. بلکه یک متد را به صورت آسنکرون فراخوانی کرده ام که داخل آن متد یک رویداد Rise می شود و داخل آن رویداد پنجرا جدید ساخته می شود.
    آخرین ویرایش به وسیله smt1383 : پنج شنبه 05 خرداد 1390 در 17:36 عصر

  4. #4

    نقل قول: پیغام خطای STA Thread در WPF

    من به این صورت عمل کردم و جواب داد. نمی دانم راه حل منطقی بوده یا خیر؟

    if (this.dispatcher.Thread==syatem.Threading.Thread.C urrentThread)
    {
    DisplayWindow();
    }
    else
    {
    this.dispatcher.invoke(new DisplayWindowdelegate(DisplayWindow),null);
    }

    private void DisplayWindow()
    {
    window1 win1=new Window1();
    win1.ShowDialog();
    }

    private delegate void DisplayWindowdelegate();

    اگر اشتباه نفهمیده باشم، این قطعه کد، باعث می شود ایجاد و نمایش کلاس win1 در همان Thread اصلی انجام گیرد و نه در یک Thread دیگر. در ضمن من هنوز نفهمیدم که چرا همین کار در win App هیچ مشکلی را بوجود نمی آورد.

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

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