为MainForm线程调用委托是不错的做法 - 这样?:
Txt.MainForm.EndInvoke(
Txt.MainForm.BeginInvoke(
new MethodInvoker(delegate()
{ // code here }
)));
答案 0 :(得分:8)
否 - 因为如果您正在呼叫EndInvoke
,那么在代表完成之前将会阻止。如果您想要这种行为,请改用Invoke
。
换句话说:如果你试图做某事其他而不是阻塞,直到你的(可能是UI修改)委托在UI线程中执行,你应该解释一下这是什么。如果没有其他内容,那么Invoke
将为您提供更简单的代码。
答案 1 :(得分:2)
由于代码触发异步调用然后立即等待调用完成,因此没有多大意义。即你最终在调用线程上等待。
答案 2 :(得分:0)
不考虑其他人提到的事情(我相信这个EndInvoke
- BeginInvoke
链只是委托的一个示例用法):使用委托是100%好的。如果这是委托主体的唯一用法,则无需将其定义为命名方法。它在代码中更干净,无需跳过文件。考虑为委托使用更新的语法:
new MethodInvoker(() => { // code here })