【发布时间】:2013-01-16 13:57:59
【问题描述】:
我有一个 asp.net Web 应用程序,并且在一个表单中我使用异步进程。
Task.Run(async () =>
{
foreach (ListItem item in cbListFaculties.Items)
{
if (item.Selected)
{
service.FinishSyncDepartment(actionId, item.Value);
}
}
});
但我想做的是,如果任务已经启动并且用户再次点击该页面,我想说,该任务还没有停止,所以你不能继续。
我该如何解决这个问题?有什么想法吗?
谢谢。
【问题讨论】:
-
通过使用静态变量/会话变量等共享资源来同步多个页面请求?
-
要详细说明 sll 所说的内容,在会话状态变量或其他一些持久性形式中,设置一个表示进程已开始的标志,然后开始该进程,完成后重置该标志。当用户来到页面时,检查标志。如果已设置,请警告他们该进程当前正在运行。那个时候,你可以做任何事情。您可以每隔几秒钟重新加载一次,直到标志被重置,或者将它们发送到另一个页面,等等......
-
对
Task的引用是否有效,或者您重新加载了完整的页面并丢失了对任务的引用?如果是这样,那么您可能需要保存对 Task 的引用以便以后使用它。为此,您可以(例如)将任务声明和启动移动到另一个不依赖于您的页面的类。例如使用一些静态类,以便在页面重新加载后任务也将在那里。
标签: c# asp.net multitasking