Silverlight 跨线程访问无效
解决办法有以下几种
1使用 SynchronizationContext;
此方法需要注意的是,System.Threading.SynchronizationContext.Current必须在UI线程中调用,如果在子线程中,将返回null;
private void button1_Click(object sender, RoutedEventArgs e) { System.Threading.SynchronizationContext sc = System.Threading.SynchronizationContext.Current; System.Threading.Thread thread=new System.Threading.Thread(()=>{ sc.Post((o) => { ((Button)sender).Content = "Hello"; }, null); }); thread.Start(); }
2 使用Dispatcher.BeginInvoke方法
private void button1_Click(object sender, RoutedEventArgs e) { System.Threading.Thread thread=new System.Threading.Thread(()=>{ this.Dispatcher.BeginInvoke(() => { ((Button)sender).Content = "Hello"; }); }); thread.Start(); }
3 使用BackgroundWorker 类来代替你的线程类
如果我的文章对你有帮助,就点一下推荐吧.(*^__^*)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步