尝试与代表接洽 - c#

我正在使用以前的C ++编码器在C#中输入其他人的代码库。在他的所有代码中,我发现如下代码段:

MethodInvoker invoker = new MethodInvoker
      (delegate()
      {
        ...
      }
      );
try
{
   this.Invoke(invoker);
}
catch (Exception x)
{
  ...
}

我的问题是:是否有任何理由先使用delegate然后进行try-catch?能否将第三到第五行花括号内的代码不仅放置在try catch中?我尚不知道C#的细微差别吗?

参考方案

这不仅会调用委托,还会将其传递给名为Invoke的方法。

它更像是您使用的UI框架/环境的细微差别。例如,在WinForms中,只有一个GUI线程可以更改UI控件的状态。如果要从其他线程更改控件的状态,则需要调用Invoke方法并传递一个委托,就像您的示例一样。调用Invoke基本上意味着“在GUI线程上运行此委托”。

请参阅以下问题:How to update the GUI from another thread in C#?
Invoke in Windows Forms

和Control.Invoke文档:
http://msdn.microsoft.com/en-us/library/a1hetckb.aspx

在catch子句中终止程序的良好做法是什么 - java

我有一个方法抛出异常public int myMethod throws Exception 我还有另一个函数调用myMethod函数和hava try-catch块。我抛出了运行时异常以强制终止程序。这是终止程序的正确方法吗?如果我这样做,它将打印两次堆栈跟踪,并且RuntimeException中的堆栈跟踪没有用。在catch子句中终止程序并打印完整堆栈…

如果抛出异常,Java将继续执行循环 - java

示例:说我要打开文件。如果得到FileNotFoundException,则需要等待一段时间,然后重试。我该如何优雅地做到这一点?还是我需要使用嵌套的try/catch块?范例:public void openFile() { File file = null; try { file = new <....> } catch(FileNotFou…

最好将同步块放在try块中,还是将try块放在同步块中? - java

例如,这更好吗?try { synchronized (bean) { // Write something } } catch (InterruptedException e) { // Write something } 还是最好这样:synchronized (bean) { try { // Write something } catch (Inte…

Try-Except例外会创建更多例外 - python

我还在学习python,所以很幽默。我正在尝试进行文本冒险,将其作为一种学习的方式,并且正在尝试实现一种方式,使玩家能够响应提示(与嵌套互动一起返回字符串),并给出与之“互动”的事物列表。我正在尝试使程序打印“ self.location [“ interper”]“的值。这是给我一些问题的代码。# give the player the ability t…

LeetCode题解计算机为什么是基于二进制的?

可以是三进制么?二进制有什么好处?题解:为什么叫电子计算机?算盘应该没有二进制