如何在C#中从同步方法调用异步方法?
大家好!我是一名初学C#的开发者,遇到了一个问题。我有一个WPF应用程序,使用Entity Framework与数据库交互。我想使用异步方法,比如`ToListAsync()`、`SaveChangesAsync()`,以避免阻塞UI线程。
然而,我有一个现有的同步方法,它从外部库调用(例如,不支持async的按钮事件处理程序)。在这个方法内部,我需要从数据库获取数据。我尝试按如下方式调用异步方法`GetCustomersAsync()`:
```csharp
public async Task
- > GetCustomersAsync()
{
using (var db = new MyDbContext())
{
return await db.Customers.ToListAsync();
}
}
public void ButtonClickHandler(object sender, EventArgs e)
{
// 错误!不能在同步方法中使用await
var customers = await GetCustomersAsync();
}
```
我知道不能直接在同步方法中添加`await`。