更新面板不再等待任务完成

时间:2018-05-24 09:46:39

标签: c# asp.net webforms updatepanel

我有一个在Asp.Net 4.0 / webforms中运行的网站。

我以为我可以按原样把它移到4.7',但我错了。

正如您从Asp.Net版本中所了解的那样,此处没有“任务等待” - 只是更新面板和页面本身的Async="true"标记。

为什么我们首先需要页面上的Async标记,我不知道。

有问题的页面是一个申请表,所以当用户输入完数据后,他们会按“提交”。

然后启动一个长时间运行的作业(90秒),然后重定向到另一个页面。

显然,在长时间运行的作业结果出现之前,重定向不会发生,因此就用户而言,它实际上是一个同步操作。

除了它不再有效,我现在收到以下消息:

异步操作仍未完成时异步模块或处理程序已完成

我猜这个页面不再等待工作完成了,但由于这种东西对我来说是全新的,我不知道修复它的正确方法是什么。

举一个例子,这是我尝试从页面加载中调用的两种方法

async Task WaitForMe()
{
    // This waits 5 secs - no issues.
    await Task.Delay(5000);
}

async Task ThisIsTheRealOne()
{
    // This contains a number of methods plus a
    // WebClient Http Request - it errors with:
    // "An asynchronous module or handler completed while an asynchronous +
    // operation was still pending"
}

任何建议表示赞赏。

1 个答案:

答案 0 :(得分:0)

我找到了答案 - 而不是我期待的答案。

被调用的方法(同步)随后异步启动电子邮件。这在Asp.Net 4.0中有效,但我不是在4.5 +中引入任务后猜测。