子线程更新UI界面的时候要用到Invoke.
那么如果要避免使用Invoke,特别是一个项目分工的时候,我做业务逻辑,人家做界面,我做完后给人家用的时候要避免让人家还要去判断是否要使用invoke,应该如何做呢?
也有人告诉我说在业务逻辑的构造函数中传入界面层的上下文(SynchronizationContext),除了这个方法还有其他的方法吗?
望高手们解答.
那么如果要避免使用Invoke,特别是一个项目分工的时候,我做业务逻辑,人家做界面,我做完后给人家用的时候要避免让人家还要去判断是否要使用invoke,应该如何做呢?
也有人告诉我说在业务逻辑的构造函数中传入界面层的上下文(SynchronizationContext),除了这个方法还有其他的方法吗?
望高手们解答.
解决方案 »
- 关于datatable2
- 同样的CS文件, 在Delphi2006和Visual Studio20058下分别编译,运行结果相差很多
- SQL内存不释放,请教高手!
- 如何在控件中检测Ctrl + 方向键的动作?
- 如何在用户点击"显示桌面"时窗口不最小化?~~~
- 好久没来了,工作太忙,冒个头,顺便散分~~
- c# 如何获取另一个程序的窗体
- 关于 DataGridView 虚拟模式的刷新问题
- 各位大拿,谁有C#做的串口通信程序,急,急
- C#如何使用RealPlay控件播放rm文件(web Application)
- 学习C# 课本上的一个问题!(关于Main函数的命令行参数的问题)
- 关于外网访问网问题??????????????????????
在WinForm中经常遇到一些费时的操作界面,比如统计某个磁盘分区的文件夹或者文件数目,如果分区很大或者文件过多的话,处理不好就会造成“假死”的情况,或者报“线程间操作无效”的异常,为了解决这个问题,可以使用委托来处理,在.net2.0中还可以用BackgroundWorker类。BackgroundWorker类是.net 2.0里新增加的一个类,对于需要长时间操作而不需要用户长时间等待的情况可以使用这个类。 注意确保在 DoWork 事件处理程序中不操作任何用户界面对象。而应该通过 ProgressChanged 和 RunWorkerCompleted 事件与用户界面进行通信。http://blog.csdn.net/zhoufoxcn/archive/2007/10/19/1832819.aspx
这样设置:
System.Windows.Forms.Form.CheckForIllegalCrossThreadCalls = false;
子线程可以直接访问控件。