2017-02-12 15 views
0

ゲッタープロパティ内で非同期呼び出し結果を取得するにはどうすればよいですか? 私のコードサンプルは次のとおりです。cでプロパティゲッターの非同期サービスコール結果を取得する方法

public override byte[] AddressBasedDocFile 
     { 
      get 
      { BaseInfoImplementationClient.AlfrescoServiceProxy.AlfrescoServicesProxyClient client = new BaseInfoImplementationClient.AlfrescoServiceProxy.AlfrescoServicesProxyClient(); 
       client.GetDataCompleted+=client_GetDataCompleted; 
       client.GetDataAsync(this.ObjectId) ;      
      } 
      set 
      { 
       base.AddressBasedDocFile = value; 
      } 
     } 

     void client_GetDataCompleted(object sender, BaseInfoImplementationClient.AlfrescoServiceProxy.GetDataCompletedEventArgs e) 
     { 
      e.Result 
     } 

そこに仕事をするためのタスクを使用した溶液hereがあるが、私が知っているように、私はそれが値を返すようにclient.GetDataAsync(this.ObjectId)、その本当に非同期サービス呼び出しを変更することはできません。

+1

プロパティを待つことができないので、実際にはメソッドにする必要があります。 –

答えて

1

プロパティを非同期で宣言することはできません。

ゲッターを非同期関数に変更することを再検討することをおすすめします。

public async Task<bytes[]> GetAddressBasedDocFileAsync() 
{ 
    .... 
} 

ゲッターは実行が速く、例外をスローするべきではありません。ゲッターでリモートネットワークコールを実行すると、これら2つのベストプラクティスが破られます。

関連する問題