我试图了解 async/await 关键字的工作原理。我在 WPF 窗口上有一个文本块绑定到 TextBlockContent 字符串属性和一个在单击 ChangeText() 时触发的按钮。
这是我的代码:
public async void ChangeText()
{
string mystring = await TestAsync();
this.TextBlockContent= mystring;
}
private async Task<string> TestAsync()
{
var mystring = await GetSomeString().ConfigureAwait(false);
mystring = mystring + "defg";
return mystring;
}
private Task<string> GetSomeString()
{
return Task.Run(() =>
{
return "abc";
});
}
从我的阅读中,我了解到将 ConfigureAwait 设置为 false 将允许我指定我不想为需要在 await 关键字之后执行的任务的“其余部分”保存当前上下文。
调试后我意识到当我有这个代码时,有时代码在主线程上运行:await GetSomeString().ConfigureAwait(false); 而我专门添加了配置等待。
我本来希望它总是在与它进入任务之前所在的线程不同的线程上运行。
有人可以帮我理解为什么吗?
非常感谢