Task.Run
成功せずに使用しようとする多くのコードを読みました。
私が達成したいこと:
- ASP.NET WebForm イベント (クリック イベント ハンドラー) で、Fire & Forget メソッドを呼び出します (現在の実行フローをブロックしません)。
私が試したことと、なぜそれが機能しないのか理解できません:
最初のバージョン:
protected void btn_Click(object sender, EventArgs e)
{
// Some actions
// Should insert a record in database --> OK
//Tried this call with and without ConfigureAwait(false)
Task.Run(() => MyClass.doWork()).ConfigureAwait(false);
// Should insert a record in database --> OK
// Some actions not blocked by the previous call
}
public static class MyClass
{
public static void doWork()
{
// Should insert a record in database --> NOT INSERTED
}
}
2 番目のバージョン:
protected void btn_Click(object sender, EventArgs e)
{
// Some actions
// Should insert a record in database --> OK
Bridge.call_doWork();
// Should insert a record in database --> OK
// Some actions not blocked by the previous call
}
public static class Bridge
{
public static async Task call_doWork()
{
//Tried this call with and without ConfigureAwait(false)
await Task.Run(() => MyClass.doWork()).ConfigureAwait(false);
}
}
public static class MyClass
{
public static void doWork()
{
// Should insert a record in database --> NOT INSERTED
}
}
そこで、データベースにレコードを挿入する Fire & Forget メソッドを呼び出しますが、レコードが挿入されません。
Fire & Forget メソッドの呼び出しの前後に挿入が行われます。
問題を解決する方法がわかりません。