Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 异步/等待简单示例_C#_Asynchronous_Async Await - Fatal编程技术网

C# 异步/等待简单示例

C# 异步/等待简单示例,c#,asynchronous,async-await,C#,Asynchronous,Async Await,我试图通过创建一个简单的示例来理解async/await的基础知识。 我使用Sqlite和异步连接,我有一个类似这样的类: public class User { public int Id { get; set; } public string Name { get; set; } } 现在让我们假设我想将用户保存到我的UserTable,保存完成后,我希望检索它 public async ? SaveToDb() {

我试图通过创建一个简单的示例来理解async/await的基础知识。 我使用Sqlite和异步连接,我有一个类似这样的类:

public class User
    {
        public int Id { get; set; }
        public string Name { get; set; }
    }
现在让我们假设我想将
用户
保存到我的UserTable,保存完成后,我希望检索它

public async ? SaveToDb()
        {
            _conn.CreateTableAsync<User>();
            await _conn.InsertAsync(new User(){Id=1, Name = "Bill"});

            //Code that waits for the save to complete and then retrieves the user
        }
公共异步?SaveToDb() { _conn.CreateTableAsync(); 等待_conn.InsertAsync(新用户(){Id=1,Name=“Bill”}); //等待保存完成然后检索用户的代码 }
我怀疑我在某处需要一项任务,但我不完全确定如何完成。谢谢你

如果你的代码没有返回任何值,签名应该是这个,返回任务:

public async Task SaveToDb()
否则,您需要将返回类型指定为本示例中
任务
字符串
中的类型参数:

public async Task<string> SaveToDb()
public异步任务SaveToDb()

你已经基本上做到了

返回
void
时:

public async Task SomethingAsync()
{
    await DoSomethingAsync();
}
返回结果时:

public async Task<string> SomethingAsync()
{
    return await DoSomethingAsync();
}
公共异步任务SomethingAsync()
{
return wait DoSomethingAsync();
}

在异步方法中返回值时需要注意的是,您返回的是内部类型(即在本例中为
string
),而不是
任务
实例。

您可以查看大量示例。我怀疑async/Wait for C#可能存在,只要它在许多地方没有示例。正如@Vinod所链接的,一个简单的搜索就可以找到这些示例和更多示例。在等待
InsertAsync
之前,您还需要等待
CreateTableAsync
。呃……您应该只做
返回DoSomethingAsync()
并从sig中删除
async
。@Aron如果在方法IIRC中等待,则不会。No.
DoSomethingAsync()
已返回
任务。因此,您不需要编译器打开
任务
等待它,然后将结果包装到另一个
任务
中。