C#在多线程环境中使用SynchronizationContext更新控件状态
C# 不允许UI线程之外的线程直接操作UI。使用SynchronizationContext实现跨线程更新UI是微软官方推荐的做法。
一个简单的例子如下:
1 2 3 4 5 6 7 | // 定义 private SynchronizationContext _syncContext; // 实例化 _syncContext = SynchronizationContext.Current; // 在线程中使用如下代码完成跨线程更新 _syncContext.Post(UpdateSpiderStatus, null); // 其中UpdateSpiderStatus函数中实现了具体更新的UI的方法 |
具体使用请参考:http://msdn.microsoft.com/zh-cn/library/system.threading.synchronizationcontext.aspx