我正在使用.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);
关于c# - AsyncCallback可以使用非静态委托(delegate)吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3374897/