Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# AsyncCallback可以使用非静态委托吗?_C#_.net_Remoting_Ipc_Iasyncresult - Fatal编程技术网

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

C# AsyncCallback可以使用非静态委托吗?,c#,.net,remoting,ipc,iasyncresult,C#,.net,Remoting,Ipc,Iasyncresult,我正在使用.net远程处理,通过异步函数调用来处理我当前项目的ipc 我遇到了一个问题,我希望客户: 异步请求信息 继续加载GUI 异步调用完成后,将其加载到gui中 我使用下面的代码来实现这一点 GetFileTextDelegate ^svd = gcnew GetFileTextDelegate(obj, &BaseRemoteObject::GetFileText); AsyncCallback ^callback = gcnew AsyncCa

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

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

  • 异步请求信息
  • 继续加载GUI
  • 异步调用完成后,将其加载到gui中
  • 我使用下面的代码来实现这一点

      GetFileTextDelegate ^svd       = gcnew GetFileTextDelegate(obj, &BaseRemoteObject::GetFileText);
      AsyncCallback       ^callback  = gcnew AsyncCallback(RecievedSomething);
      IAsyncResult        ^arValSet  = svd->BeginInvoke(callback, nullptr);
    
    在上面的示例中,ReceivedSomething在此示例中必须是静态方法。为什么呢?如果我能使这个函数非静态,我就可以加载我的gui,一切都很好

    我的解决方案是接收一些触发gui订阅的静态事件的消息。这很麻烦,因为现在需要2个委托和一个事件来处理我的1个异步函数调用

    有没有一种方法可以让异步回调与非静态函数一起工作


    谢谢

    您可以对
    异步回调
    委托使用非静态方法。您只需要正确地指定它。例如,要使用
    this->ReceivedSomething

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

    +一个写得好的问题-1用于使用C#标记,然后编写C++CLI代码。看到C++CLI中的可耻、丑陋的混乱,我会晕船。周一早上,我第一件事就是尝试一下,谢谢!我没有把二和二放在一起,并意识到AsyncCallback只是一个委托,它的构造函数应该像一个委托一样运行。