我阅读了很多试图使用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
}
}
第二版:
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 方法之前和之后的插入已完成。
我不知道如何解决我的问题。