2013年12月6日
摘要: http://bbs.csdn.net/topics/390162519事实上,本文内容很简单且浅显,所以取消前戏,直接开始。。源代码:在本文最后这里是一张动画,演示在多线程(无限循环+Thread.Sleep)情况下主界面操作不受影响。多线程是一种提高程序运行效率和性能的常用技术。随着我们学习工作的深入,在编程中或多或少会涉及到需要多线程的情况。多数时候,我们的操作模式是后台线程中处理数据,计算结果,然后在前台界面(GUI)中更新显示。在.NETFramework中,为了保证线程安全,避免出现访问竞争等问题,是不允许跨线程访问窗体控件的。如果强行访问,则会引发InvalidOperation 阅读全文
posted @ 2013-12-06 17:25 也风 阅读(2159) 评论(0) 推荐(0) 编辑
摘要: 在设计界面时,我们经常需要将一些需要时间才能完成的操作放在另一个线程(不同于UI主线程)中执行。但是这些操作可能需要将其结果或完成情况通知主线程,比如调用窗体的方法,或者触发事件(由界面响应事件),很多情况下这种通知需要访问控件。但是如果调用上述方法或者触发事件的线程不是控件的创建进程,Control就不能在创建它的thread之外被访问,此时会引发一个异常,好在可以通过控件的invoke方法来访问它。Windows 窗体中的控件被绑定到特定的线程,不具备线程安全性。因此,如果从另一个线程调用控件的方法,那么必须使用控件的 Invoke 方法来将调用封送到适当的线程。一、 Control.In 阅读全文
posted @ 2013-12-06 15:43 也风 阅读(1001) 评论(0) 推荐(0) 编辑
摘要: 一.多线程访问winform控件出现异常的解决方法1.问题描述如果创建某控件的线程之外的其他线程试图调用该控件,则会引发一个InvalidOperationException异常。(1)并提示消息:“从不是创建控件controlname的线程访问它。”默认情况下,winform控件只能由创建该控件的线程调用。(1)如果要在新的线程中调用该控件,则需要使用控件的invoke方法来进行。************************************************************************************************2.解决方法1:说明: 阅读全文
posted @ 2013-12-06 15:28 也风 阅读(601) 评论(0) 推荐(0) 编辑