博客园

随笔分类 -  C#基础知识

摘要:默认情况下,C#不允许在一个线程中直接操作另一个线程中的控件,这是因为访问windows窗体控件本质上不是线程安全的.如果有两个或多个线程操作某一控件的状态,则可能会迫使该控件进入一种不一致的状态.还可能出现其他线程相关的BUG,以及不同线程争用控件引起的死锁问题.因些确保以线程安全方式访问控件非常重要.在调试器中运行应用程序时,如果创建某控件的线程之外的其他线程试图调用该控件,则调试器会引发一个InvalidOperationException异常,并提示消息:从不是创建控件的线程访问它.但是在windows应用程序中,为了在窗体上显示线程中处理的信息,我们可能需要经常在一个线程中引用另一个 阅读全文
posted @ 2012-12-12 08:54 一心一意 阅读(1483) 评论(0) 推荐(0)
摘要:创建代理delegate void SetTextCallback(string text);创建和启动线程this.demoThread = new Thread(new ThreadStart(this.ThreadProcUnsafe)); this.demoThread.Start();线程中要求改主窗体UI中的text属性private void ThreadProcSafe() { this.SetText("This text was set safely."); }调用窗... 阅读全文
posted @ 2012-11-08 21:16 一心一意 阅读(3569) 评论(0) 推荐(0)
摘要:事件委托事件概述事件就是当对象或类状态发生改变时,对象或类发出的信息或通知。发出信息的对象或类称为"事件源",对事件进行处理的方法称为"接收者",通常事件源在发出状态改变信息时,它并不知道由哪个事件接收者来处理.这就需要一种管理机制来协调事件源和接收者,C++中通过函数指针来完成的.在C#中事件使用委托来为触发时将调用的方法提供类型安全的封装 事件的声明1.声明一个委托 public delegate void EventHandler(object sender, System.EventArgs e);2.声明一个事件 public event Ev 阅读全文
posted @ 2012-11-08 21:05 一心一意 阅读(320) 评论(0) 推荐(0)

Powered by:
一心一意
Copyright & JGuang