Windowsサービスから呼び出すWCFサービスがあります。
WCFサービスはSSISパッケージを実行しますが、そのパッケージが完了するまでに時間がかかる場合があり、Windowsサービスが完了するまで待機する必要がないようにしたいと思います。
WCFサービス呼び出しを非同期にするにはどうすればよいですか? (またはデフォルトで非同期ですか?)
Visual Studio 2010では、Add Service Reference > click Advanced button > check the Generate Asynchronous Operations
チェックボックス。
そうすると、非同期操作が追加され、使用できるようになります。
サービス側:
[ServiceContract]
public interface IMyService
{
[OperationContract]
bool DoWork(int i);
}
クライアント側:
[ServiceContract(Name = nameof(IMyService))]
public interface IMyServiceClient : IMyService
{
[OperationContract]
Task<bool> DoWorkAsync(int i);
}
クライアント(Windowsサービス?)内のWCFプロキシは、非同期操作を利用可能にするために、作成時に指定する必要があります。
既存のWCFプロキシを修正するには、右クリックして[サービス参照の構成]を選択します。ここから、[非同期操作の生成]の横にあるチェックボックスをオンにするだけです。
OK、それがWCFプロキシ側の処理です。次に、クライアント内でプロキシを使用してAPM(非同期プログラミングモデル)を使用する必要があります。