2017-02-12 16 views
0

как я могу получить результат вызова Async внутри свойства getter? мой код образца:как получить результат вызова службы async в свойство getter в 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() 
{ 
    .... 
} 

Getter должен быть быстрым для выполнения и не должен генерировать исключения. Выполнение удаленного сетевого вызова в геттере нарушает эти две лучшие практики.

 Смежные вопросы

  • Нет связанных вопросов^_^