Silverlight跨线程问题解决办法

方法一:使用DependencyObject.Dispatcher.BeginInvoke 方法

private void btnThread1_Click(object sender, RoutedEventArgs e)
{
new Thread(() => {
this.Dispatcher.BeginInvoke(() => { MessageBox.Show("Hello World"); });
}).Start(); } 

方法二:使用SynchronizationContext 对象

private void btnThread1_Click(object sender, RoutedEventArgs e)
{
SynchronizationContext context = SynchronizationContext.Current;
new Thread(() => { context.Post((state) => { MessageBox.Show("Hello World"); }, null); }).Start();


方法三:System.Windows.Deployment

new Thread(() => {
new Thread(() => {
System.Windows.Deployment.Current.Dispatcher.BeginInvoke(() => { MessageBox.Show("Hello World"); }); 

}).Start();

 }).Start();

posted @ 2012-02-25 15:45  liancs  阅读(105)  评论(0编辑  收藏  举报