.net - 让 IAsyncResult 触发 "completed"事件

标签 .net delegates remoting

我正在使用 Remoting 执行一些 IPC 通信,并有以下问题:

当我调用委托(delegate)来收集服务器端数据时,收集 IAsyncResult 时是否可以在客户端上触发一个事件?

以下代码是 VC++ 代码,但 .net 代码是 .net 代码。

  GetFileTextDelegate ^svd = gcnew GetFileTextDelegate(obj, &BaseRemoteObject::GetFileText);
  IAsyncResult        ^arValSet = svd->BeginInvoke(nullptr, nullptr);
  String ^result = svd->EndInvoke(arValSet);

在此示例中,最后一行代码将仅锁定当前线程,直到 Invoke 完成。是否可以仅订阅“IAsyncResult_Completed”事件或类似事件?

谢谢

最佳答案

是的,有一个 good example在 MSDN 上使用 AsyncCallback委托(delegate)执行此操作。

最简单的方法是在委托(delegate)上使用 BeginInvoke 并向其传递一个 AsynCallback 委托(delegate)的实例,以便在操作完成时调用。

在 C#(我比托管 C++ 更熟悉)中,您基本上会这样写:

// when the async operation completes, YourCallBackMethod will be run
AsyncCallback callback = new AsynCallback( YourCallBackMethod );
callAsynchronously.BeginInvoke( callback, null );

在回调方法中,您必须对异步运行的委托(delegate)调用 EndInvoke()。最简单的方法是使用提供的 IAsyncResult

关于.net - 让 IAsyncResult 触发 "completed"事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3372567/

相关文章:

.net - 如何以编程方式检查 .NET 4.7 Target Pack 是否已安装?

.net - 我什么时候应该使用 BitVector32?

c# - ORM支持泛型映射

java - 无法从 AS3 Flash CS6 调用 red5 服务器中的方法

c# - 方法组中泛型调用的 RealProxy Invoke Message 中的 TargetException

c++ - 现在微软基础类(MFC)值不值得学?

python - 如何使用 QStyledItemDelegate 只绘制背景,而不覆盖文本?

ios - 如何使用受托人实现 Cosmos 星级评定?

ios - 在 swift4 中的 ViewController 之间传递数据

c# - 如何使用 TcpChannel 配置对远程服务器的并发请求限制