async/await キーワードがどのように機能するかを理解しようとしています。TextBlockContent 文字列プロパティにバインドされた WPF ウィンドウ上のテキストブロックと、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 キーワードの後に実行する必要がある Task の「残り」の現在のコンテキストを保存したくないことを指定できることがわかりました。
デバッグ後、このコードがあると、次の行の後のメインスレッドでコードが実行されていることがあることに気付きました。私は具体的にconfigure awaitを追加しました。
タスクに入る前にあったスレッドとは異なるスレッドで常に実行されると予想していました。
誰かが理由を理解するのを手伝ってくれますか?
どうもありがとうございました