1

2 つのプロセス間の非同期通信に WCF を使用します。
これまで IAsyncResult パターンを実装し、次の 3 つのメソッドを使用してそれを実行しました
。BeginOperation - client.BeginOperation、サービスが受信すると、Operation
Operation のデリゲートを使用してスレッドプールでジョブをキューに入れます。Operation - サービス側で実行
EndOperation - これがクライアント コールバックです。

私の質問は、クライアントからサービスに文字列を送信したい、送信を非同期にしたい、そして応答を取得したくない-サービスに文字列を出力させたいだけです。
これで十分ですか?これはノンブロッキングでなければなりません

    [OperationContract(IsOneWay = true)]
    void PrintString(string message);

または、次のようにする必要があります。

    [OperationContract(IsOneWay = true, AsyncPattern=true)]
    void BeginPrintString(string message, AsyncCallback callback, object state);
    void EndPrintString(IAsyncResult asyncResult);
4

2 に答える 2

-1

別のスレッドを使用して作業を行うことで、より非同期にすることができます。

それ以外の:

public void MyOneWayServiceOperation() {
   // do stuff
}

次のようにします。

public void MyOneWayServiceOperation() {
   new Thread(() => {
      // do stuff
   }).Start();
}

とにかく、サービス操作は新しいスレッドで実行されるため、コードが別の新しいスレッドにあることで問題が発生することはありません。

Thread.Sleep()作業を開始する前にサービス操作を完了させたい場合は、作業の前に呼び出しを追加できます。これにより、例外がスローされることなく、サービス操作からサービスを終了できました。

于 2014-07-17T01:10:11.127 に答える