为 MethodInvoker 委托声明 EndInvoke

Declaring EndInvoke for MethodInvoker delegate

如何为这样的 BeginInvoke 声明 EndInvoke

this.BeginInvoke((MethodInvoker) delegate() {
  frmPressEnableButton.ShowDialog();
}); 

?

更新:这是我在 运行 期间不断收到的两条错误消息 1. 在创建 window 句柄之前,可以在控件上调用 InvokeBeginInvoke。 2. 已经可见的窗体,不能显示为模态对话框。在调用 ShowDialog 之前将表单的 Visible 属性 设置为“false”。

需要注意的是,这个问题是在我包含另一个对话框后引发的,为此 1.我通过引用传递主窗体本身 2. 我没有为新对话框调用InvokeBeginInvoke。 这必须让 运行ning 在后台。

不确定您尝试做什么,但看起来您需要一个 IAsyncResult 接口来保存异步操作的结果并稍后在您的 EndInvoke 方法中使用它:

IAsyncResult result = this.BeginInvoke((MethodInvoker) delegate() {
  frmPressEnableButton.ShowDialog();
}); 

this.EndInvoke(result);  // waits until the async call completes