CheckForIllegalCrossThreads,Thread&代表 - Window Mobile

时间:2012-05-05 12:56:59

标签: c# multithreading windows-phone

我目前遇到了使我的Windows Phone应用程序执行跨线程操作的问题。
在defualt C#[Windows Form Application]中,有一个名为“CheckForIllegalCrossThreads”的选项/变量 - 如果将此variables属性设置为“False”,则应用程序不再检查运行时操作期间的非法交叉线程。

实际问题:此变量是否存在于Silverlight Windows Phone应用程序项目中的其他名称下?

更新:[问题已解决,感谢Jon Skeet]

对于寻找解决这个问题的方法的其他人,或者一个相似的问题:我使用[如上所述]“Dispatcher.BeginInvoke”解决了这个问题

Thread myThread;
public MainPage()
    {

        InitializeComponent();

        myThread = new Thread(ThreadPromt);
        myThread.Start();
    }

Private void ThreadPromt()
{
Dispatcher.BeginInvoke(deleage(
     MessageBox.Show(string.Format("Accessed from another thread: {0}", SampleLabel.Text);
     ButtonSample.Text = "Accessed from another thread...";
);
}

1 个答案:

答案 0 :(得分:2)

  

实际问题:此变量是否存在于silverlight Windows Phone应用程序项目中的其他名称下?

即使它确实如此,也不应该使用它。将值设置为false也不是在Windows窗体下执行的操作。

如果您的汽车中的“低燃油”指示灯亮起,您是否断开它,或者您为汽车加油?这同样适用于:修复问题,而不是警告。不要直接从UI线程访问UI元素。在Windows窗体中使用Control.Invoke / BeginInvoke,或在WPF / Silverlight中使用Dispatcher.Invoke / BeginInvoke来编组UI线程的执行。