c# - 异步调用 webservice 方法

标签 c# .net async-await

我需要在 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);
    }
}

感谢您的帮助。

最佳答案

我大概会写出如下代码:

    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;
    }

一直遵循“异步”规则。

关于c# - 异步调用 webservice 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45702841/

相关文章:

c# - 对 ? 的行为感到困惑。运算符(operator)

c# - 如何在 OpenTK .NET Core 中设置 OpenGL API 版本?

C# await之后代码会继续执行吗?

c# - 在循环中等待某些内容时,异步方法如何工作?

c# - 与 PowerShell CmdLets 互操作

c# - 在 await Task.WhenAll() 中隔离异常

c# - 为我的程序文件夹的所有用户设置写权限

c# - 无法对空引用异常执行运行时绑定(bind)

c# - XSLT:如何从 XSL 转换中输出 '<' 和 '>'?

c# - 严格的 MVVM 和 Task.ConfigureAwait(false)