0

我目前遇到了让我的 Windows Phone 应用程序执行跨线程操作的问题。
在默认的 C# [Windows 窗体应用程序] 中,有一个名为“CheckForIllegalCrossThreads”的选项/变量 - 如果将此变量属性设置为“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...";
);
}
4

1 回答 1

2

实际问题:此变量是否以另一个名称存在于 silverlight windows phone 应用程序项目中?

即使有,你也不应该使用它。在 Windows 窗体下将该值设置为 false 也不正确。

如果你车里的“低油耗”灯亮了,你是断开它,还是给你的车加油?这同样适用于:解决问题,而不是警告。除了从 UI 线程之外,不要直接访问 UI 元素。在 Windows 窗体中使用Control.Invoke/或在 WPF / Silverlight 中使用 / 将执行编组到 UI 线程。BeginInvokeDispatcher.InvokeBeginInvoke

于 2012-05-05T13:00:14.010 回答