rsp*_*cer 2 c# delegates try-catch
我在c#中输入别人的代码库作为以前的c ++编码器.在他的代码中,我发现了如下所示的片段:
MethodInvoker invoker = new MethodInvoker
(delegate()
{
...
}
);
try
{
this.Invoke(invoker);
}
catch (Exception x)
{
...
}
Run Code Online (Sandbox Code Playgroud)
我的问题是:有没有理由使用a delegate
和try-catch?第三到第五行的花括号内的代码不仅可以放在try catch中吗?c#有一些细微差别我还不知道吗?
这不只是调用委托,而是将其传递给一个名为的方法Invoke
.
这更符合您使用的UI框架/环境的细微差别.例如,在WinForms中,只有一个GUI线程可以更改UI控件的状态.如果要从其他某个线程更改控件的状态,则需要调用Invoke方法并传递委托,就像在示例中一样.调用Invoke
基本上意味着"在GUI线程上运行此委托".
请参阅以下问题:如何从C#中的另一个线程更新GUI? 在Windows窗体中调用
和Control.Invoke文档:http: //msdn.microsoft.com/en-us/library/a1hetckb.aspx
归档时间: |
|
查看次数: |
1562 次 |
最近记录: |