C# 如何使用API中提供的异步方法?

C# 如何使用API中提供的异步方法?,c#,.net,asynchronous,async-await,synchronous,C#,.net,Asynchronous,Async Await,Synchronous,作为一个简单的例子,我想展示数据库中的所有用户,API提供了异步方法ShowUsersAsync() 我是否遗漏了有关async和Wait的内容 API参考: 您可以这样做: TestAsync(client).Wait(); 根据OP中提供的链接上的文档,在预期的应用程序中访问API应该是这样的 public async Task<InfluxResult<UserRow>> TestAsync() { var client = new InfluxClien

作为一个简单的例子,我想展示数据库中的所有用户,API提供了异步方法
ShowUsersAsync()

我是否遗漏了有关async和Wait的内容

API参考: 您可以这样做:

TestAsync(client).Wait();

根据OP中提供的链接上的文档,在预期的应用程序中访问API应该是这样的

public async Task<InfluxResult<UserRow>> TestAsync() {
    var client = new InfluxClient(new Uri("http://localhost:8086"));
    var users = await client.ShowUsersAsync();
    return users;
}
如果此时的目的只是测试API,那么单元测试可能是一个很好的候选者

[UnitTest]
public class InfluxClientTests {
    [TestMethod]
    public async Task InfluxClient_Should_Get_All_Users() {
        //Arrange        
        var client = new InfluxClient(new Uri("http://localhost:8086"));
        //Act
        var users = await client.ShowUsersAsync();

        //Assert
        //...verify expected results.
    }
}

可以在测试运行程序中运行/调试测试,并在不受控制台应用程序限制的情况下验证行为。

请注意,在
Main
方法中的控制台应用程序中,async/await不好。您实际打算在何处使用api可能存在重复?因为如果它不是预期的平台,那么在控制台应用程序中使用它就不是一个好例子。另外,
TestAsync
应该返回
Task
。这很好。非常感谢。
public async Task<InfluxResult<UserRow>> TestAsync() {
    var client = new InfluxClient(new Uri("http://localhost:8086"));
    var users = await client.ShowUsersAsync();
    return users;
}
var users = await TestAsync();
[UnitTest]
public class InfluxClientTests {
    [TestMethod]
    public async Task InfluxClient_Should_Get_All_Users() {
        //Arrange        
        var client = new InfluxClient(new Uri("http://localhost:8086"));
        //Act
        var users = await client.ShowUsersAsync();

        //Assert
        //...verify expected results.
    }
}