新建SL4 應用程序,在MainPage下添加代碼:
<Button x:Name="btnThread1" Click="btnThread1_Click">Thread1</Button>
后臺代碼為:
這個問題的原因很簡單:一個線程嘗試調用另一個線程的方法 解決這個異常的方式很簡單,
1:使用DependencyObject.Dispatcher.BeginInvoke 方法:
new Thread(() =>
{
context.Post((state) =>
{
MessageBox.Show("Hello World");
}, null);
}).Start();
}
new Thread(() =>
{
context.Post((state) =>
{
MessageBox.Show("Hello World");
}, null);
}).Start();
}).Start();
}
所以提出了第三種方案:
1:新建靜態類UISynchronizationContext,代碼如下:
public App()
{
this.Startup += this.Application_Startup;
this.Exit += this.Application_Exit;
this.UnhandledException += this.Application_UnhandledException;
//保存UI線程同步上小文
UISynchronizationContext.Context = SynchronizationContext.Current;
InitializeComponent();
}
System.Windows.Deployment.Current.Dispatcher.BeginInvoke(() =>
{
MessageBox.Show("Hello World");
});
}).Start();
}).Start();
新聞熱點
疑難解答