【发布时间】:2017-03-13 08:20:26
【问题描述】:
下面的click button event首先用“B”填充list,然后用“A”。
List<string> list = new List<string>();
private async void ButtonBase_OnClick(object sender, RoutedEventArgs e)
{
await Task.Factory.StartNew(async () =>
{
await Task.Factory.StartNew(() => Thread.Sleep(1000));
list.Add("A");
});
list.Add("B");
}
问:如何使用 await async 概念强制 .Add("A") 在 .Add("B") 之前执行?
我试过了:
- 我尝试将
void替换为Task,但无法将函数分配给Click 事件。 - 我尝试了 Task.Wait() 函数,但在稍微复杂一点的情况下,它会导致死锁。
注意:这是一个简化的示例。在我的真实世界代码中,我正在调用一系列异步方法,所有方法都返回Task 对象并且都在等待,但它们仍然没有按我需要的顺序运行。 Task.Factory.StartNew() 函数在我的真实代码中的使用方式完全相同。
【问题讨论】:
标签: c# .net wpf async-await