پیغام خطای STA Thread در WPF
با سلام
در یک برنامه من در یک Thread دیگر یک نمونه از یک window می سازم و متد ShowDialog آنرا اجرا می کنم اما پیغام خطای زیر ظاهر می شود:
The calling thread must be STA. Because many UI components require this
در حالیکه من همین کار را در win app انجام می دهم و هیچ مشکلی بوجود نمی آید. چه چیزی باعث می شود که در WPF این پیغام ظاهر شود و چگونه می توان این مشکل را حل کرد؟ ممنون
نقل قول: پیغام خطای STA Thread در WPF
سلام
شما باید به این شکل بکار ببرید
Thread t = new Thread(ThreadProc);
t.SetApartmentState(ApartmentState.STA);
t.Start();
نقل قول: پیغام خطای STA Thread در WPF
ممنون از راهنماییتان. اما من از Thread استفاده نکرده ام. بلکه یک متد را به صورت آسنکرون فراخوانی کرده ام که داخل آن متد یک رویداد Rise می شود و داخل آن رویداد پنجرا جدید ساخته می شود.
نقل قول: پیغام خطای 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 هیچ مشکلی را بوجود نمی آورد.