中国开发网: 论坛: 程序员情感CBD: 贴子 81130
李颖
.Net线程问题
在线程中调用Control.Invoke方法,MSDN说“在拥有此控件的基础窗口句柄的线程上执行委托”

应该是当前线程等待“拥有此控件的基础窗口句柄的线程”完成这个委托调用之后再继续执行吧?

我写了一段程序,Control在主线程中创建

当这段程序在另外的线程中运行时,通过Control.Invoke方法执行一个委托,执行得很好

但是当这段程序本身也运行在主线程中时,发现委托没有被立即执行,好像被放在一个什么任务队列中去了

结果导致我的某些内部状态不正确,后面的代码发生deadlock

请问,当调用Control.Invoke方法的线程,与“拥有此控件的基础窗口句柄的线程”就是同一个线程的时候

如何保证Control.Invoke方法中的代理立即被执行?

或者,如何判断当前线程和“拥有此控件的基础窗口句柄的线程”之间的关系?

如果我能判断当前线程就是“拥有此控件的基础窗口句柄的线程”,那么就不必调用Control.Invoke方法,而可以直接执行我需要的那个委托
DISSENT IS THE HIGHEST FORM OF PATRIOTISM !

--Thomas Jefferson

相关信息:


欢迎光临本社区,您还没有登录,不能发贴子。请在 这里登录