3

現在のプロジェクトのipcを処理するために非同期関数呼び出しを使用して、.netリモーティングを使用しています。

クライアントに次のことをしてもらいたいという問題が発生しています。

  1. 非同期で情報を要求する
  2. GUIのロードを続行します
  3. 非同期呼び出しが完了したら、それをGUIにロードします

私は次のコードでこれを行います

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

上記の例では、RecievedSomethingはこの例の静的メソッドである必要があります。何故ですか?この関数を非静的にすることができれば、GUIをロードできます。

私の解決策は、GUIがサブスクライブしている静的イベントをRecievedSomethingで起動させることです。これは、1つの非同期関数呼び出しを処理するために2つのデリゲートと1つのイベントが必要になるという点で面倒です。

AsyncCallbackを非静的関数で動作させる方法はありますか?

ありがとう!

4

1 に答える 1

3

AsyncCallbackデリゲートには非静的な方法を使用できます。正しく指定する必要があります。たとえば、使用するにはthis->ReceivedSomething

AsyncCallback ^callback  = gcnew AsyncCallback(this, &MyClassType::RecievedSomething);
于 2010-07-30T20:14:40.020 に答える