Avatar ·

如何在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`。