编程语言
首页 > 编程语言> > C#-AsyncCallback可以使用非静态委托吗?

C#-AsyncCallback可以使用非静态委托吗?

作者:互联网

我正在使用.net远程处理,并通过异步函数调用来处理当前项目的ipc.

我遇到了一个问题,我希望客户:

>异步请求信息
>继续加载GUI
>异步调用完成后,将其加载到GUI中

我使用以下代码执行此操作

  GetFileTextDelegate ^svd       = gcnew GetFileTextDelegate(obj, &BaseRemoteObject::GetFileText);
  AsyncCallback       ^callback  = gcnew AsyncCallback(RecievedSomething);
  IAsyncResult        ^arValSet  = svd->BeginInvoke(callback, nullptr);

在上面的示例中,RecievedSomething必须在此示例中为静态方法.这是为什么?如果我可以使此函数为非静态,则可以加载gui,也可以.

我的解决方案是让RecievedSomething触发我的GUI订阅的静态事件.这很麻烦,因为现在将需要2个委托和一个事件来处理我的1个异步函数调用.

有没有办法使AsyncCallback与非静态函数一起工作?

谢谢!

解决方法:

您可以对AsyncCallback委托使用非静态方法.您只需要正确指定它即可.例如,使用this-> ReceivedSomething:

AsyncCallback ^callback  = gcnew AsyncCallback(this, &MyClassType::RecievedSomething);

标签:remoting,iasyncresult,c,net,ipc
来源: https://codeday.me/bug/20191209/2097502.html