Silverlight 跨线程访问无效

来源:互联网 发布:董小飒淘宝赚多少钱 编辑:程序博客网 时间:2024/05/01 22:50

解决办法有以下几种1使用 SynchronizationContext;此方法需要注意的是,System.Threading.SynchronizationContext.Current必须在UI线程中调用,如果在子线程中,将返回null;

双击代码全选
1
2
3
4
5
6
7
8
9
10
11
12
private void button1_Click(objectsender, RoutedEventArgs e)  
{  
    System.Threading.SynchronizationContext sc = System.Threading.SynchronizationContext.Current;  
    System.Threading.Thread thread=newSystem.Threading.Thread(()=>{  
        sc.Post((o) => {  
            ((Button)sender).Content ="Hello";  
        },null);  
              
       
    });  
    thread.Start();  
}

2 使用Dispatcher.BeginInvoke方法

双击代码全选
1
2
3
4
5
6
7
8
9
10
private void button1_Click(objectsender, RoutedEventArgs e)  
{  
          
    System.Threading.Thread thread=newSystem.Threading.Thread(()=>{  
       
        this.Dispatcher.BeginInvoke(() => { ((Button)sender).Content ="Hello"; });  
               
    });  
    thread.Start();  
}

3 使用BackgroundWorker 类来代替你的线程类