0

私はWCFとAsyncを初めて使用します。長時間実行されるメソッドでBeginとEndのサービスがあります。

[ServiceContract]
public interface IDocImagingStatusService
{
    [OperationContract(AsyncPattern = true)]
    IAsyncResult BeginGetDirectoryCount(AsyncCallback callback, object state);
    IList<DirectoryCounts> EndGetDirectoryCount(IAsyncResult result);
}

クライアントはBeginGetDirectoryCountを呼び出す必要がありますが、表示されるのはGetDirectoryCount()メソッドだけです。彼らはどこに行きましたか?

var docImgSvc = new DocImagingService.DocImagingStatusServiceClient( "WSHttpBinding_IDocImagingStatusService");
docImgSvc.GetDirectoryCount();
4

2 に答える 2

2

おそらく、プロキシが非同期操作で生成されたことを確認する必要があります。svcutilを直接使用している場合は、http://msdn.microsoft.com/en-us/library/aa347733.aspxを参照してください。Visual Studioの[サービス参照の追加]メニューを使用している場合は、詳細設定で非同期プロキシメソッドを生成するオプションを確認する必要があります。

于 2012-07-20T02:53:11.477 に答える
2

デフォルトVisual Studioでは、svcutil.exeツールの[サービス参照の追加]ダイアログは、サービス契約の非同期操作を生成しません。それらを生成する場合は、両方のオプションで明示的に指定する必要があります。

  • AdvancedVisual Studio 2010では、 [サービス参照の追加]ダイアログでボタンを選択し、次のGenerate Asynchronous Operationsように[詳細設定]ダイアログのチェックボックスをオンにすることができます。

ここに画像の説明を入力してください

/async:同期メソッドシグネチャと非同期メソッドシグネチャの両方を生成します。デフォルト:同期メソッドシグネチャのみを生成します。短縮形:/ a

于 2012-07-20T12:47:40.840 に答える