为MethodInvoker委托声明EndInvoke

本文关键字:声明 EndInvoke MethodInvoker | 更新日期: 2023-09-27 18:05:43

如何为BeginInvoke声明EndInvoke:

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

?

UPDATE:这是我在运行时不断得到的两个错误消息1. 在创建窗口句柄之前,可以在控件上调用InvokeBeginInvoke。2. 已经可见的窗体不能显示为模态对话框。在调用ShowDialog之前,将窗体的Visible属性设置为false。

应该注意的是,这个问题是在我添加了另一个对话框之后引发的1. 我通过引用传递主形式本身2. 我没有为新的对话框调用InvokeBeginInvoke。它必须在后台运行

为MethodInvoker委托声明EndInvoke

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

IAsyncResult result = this.BeginInvoke((MethodInvoker) delegate() {
  frmPressEnableButton.ShowDialog();
}); 
this.EndInvoke(result);  // waits until the async call completes