它是很好的做法,调用委托MainForm的话题 - 这样?:BeginInvoke/EndInvoke调用主线程的良好做法吗?
Txt.MainForm.EndInvoke(
Txt.MainForm.BeginInvoke(
new MethodInvoker(delegate()
{ // code here }
)));
它是很好的做法,调用委托MainForm的话题 - 这样?:BeginInvoke/EndInvoke调用主线程的良好做法吗?
Txt.MainForm.EndInvoke(
Txt.MainForm.BeginInvoke(
new MethodInvoker(delegate()
{ // code here }
)));
没有 - 因为如果你调用EndInvoke
,将阻塞,直到代理完成。如果你想要这种行为,只需使用Invoke
。换句话说:如果你试图做一些其他的其他的,直到你的(可能是UI修改的)委托在UI线程中执行,你应该解释一下是什么。如果没有其他的东西,那么Invoke
会给你更简单的代码。
代码启动异步调用,然后立即等待调用完成,这并没有多大意义。即你最终在等待调用线程。
不考虑其他提到的东西(我相信这个EndInvoke
- BeginInvoke
链只是委托的一个示例用法):使用委托是100%OK。如果这是委托体的唯一用法,则不需要将其定义为命名方法。它在代码中更干净,无需跳过该文件。考虑为代表使用更新的语法:
new MethodInvoker(() => { // code here })