如何在getter属性中获取异步调用结果?我的代码示例是:
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)以使其返回值,它实际上是一个异步服务调用。
发布于 2017-02-12 17:09:35
属性不能声明为异步。
我建议您应该重新考虑将getter更改为异步函数。
public async Task<bytes[]> GetAddressBasedDocFileAsync()
{
....
}Getter的执行速度应该很快,不应该抛出异常。在getter中执行远程网络调用会破坏这两个最佳实践。
https://stackoverflow.com/questions/42185554
复制相似问题