[阅读: 426] 2005-01-13 02:59:21
在线程中调用Control.Invoke方法,MSDN说“在拥有此控件的基础窗口句柄的线程上执行委托”
应该是当前线程等待“拥有此控件的基础窗口句柄的线程”完成这个委托调用之后再继续执行吧?
我写了一段程序,Control在主线程中创建
当这段程序在另外的线程中运行时,通过Control.Invoke方法执行一个委托,执行得很好
但是当这段程序本身也运行在主线程中时,发现委托没有被立即执行,好像被放在一个什么任务队列中去了
结果导致我的某些内部状态不正确,后面的代码发生deadlock
请问,当调用Control.Invoke方法的线程,与“拥有此控件的基础窗口句柄的线程”就是同一个线程的时候
如何保证Control.Invoke方法中的代理立即被执行?
或者,如何判断当前线程和“拥有此控件的基础窗口句柄的线程”之间的关系?
如果我能判断当前线程就是“拥有此控件的基础窗口句柄的线程”,那么就不必调用Control.Invoke方法,而可以直接执行我需要的那个委托
DISSENT IS THE HIGHEST FORM OF PATRIOTISM !
--Thomas Jefferson