Task.Run
を使用しようとすると、多くのコードが正常に読み込まれません。私はachiveたい何Task.Runを使用してFire&Forgetメソッドが動作しない
:
- ASP.NETのWebフォームのイベント(イベントハンドラをクリックしてください)&メソッドを忘れて火を呼び出す(実行の電流の流れを遮断していません)。
最初のバージョン: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 } }
番目のバージョン:私が試したし、それが働いていない理由をunderstantません何
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
}
}
は、だから私は火を呼ぶ&メソッドを忘れるとレコードがデータベースに挿入されますが、レコードは挿入されません。
火の呼び出しの前後の挿入&忘れたメソッドが実行されます。
私の問題を解決する方法がわかりません。
doWork()にブレークポイントを置くと、ブレークポイントにヒットしますか? –
'MyClass.doWork()'が同期して動作することを確認しましたか? – weston
申し訳ありませんが、サーバー上のコードをテストし、web.configでassemblyBindingを使用するため、デバッガを使用できません。 – krlzlx