我需要异步调用Web服务上的Register()
方法(使用C#)。 Web服务中实际Register
方法的实现不返回任何值。但是如果方法失败,它会引发异常。鉴于此,以下代码看起来好吗?
public void RegisterProduct(string productName)
{
await RegisterProductAsync();
}
private async static Task RegisterProductAsync(string productName)
{
try
{
await myWebService.Register(productName);
}
catch(Exception ex)
{
LogException(ex);
}
}
感谢您的帮助。
答案 0 :(得分:0)
我可能会写下面的代码:
private async static Task<int> RegisterProductAsync(string productName)
{
try
{
await Task.Run(() => myWebService.Register(productName));
return 0;
}
catch (Exception ex)
{
LogException();
return 1;
}
}
public async Task<int> RegisterProduct(string productName)
{
var result = await RegisterProductAsync(productName);
return result;
}
遵循规则&#39; async&#39;一路走来。
答案 1 :(得分:0)
添加服务后,我猜您知道会生成代理文件。
在代理文件中,您可以记下关联的async
函数,该函数返回System.Threading.Tasks.Task<xxxxxx>
作为返回值。
因此,对于Register
,您可以在代理文件中记下函数RegisterAsync(string)
。
您可以调用该函数(在您的情况下:RegisterAsync(string
))进行异步调用。
myWebService.RegisterAsync(productName);