我有一个asp.net Web应用程序,并以一种形式使用异步进程。
Task.Run(async () =>
{
foreach (ListItem item in cbListFaculties.Items)
{
if (item.Selected)
{
service.FinishSyncDepartment(actionId, item.Value);
}
}
});
但我想要做的是,如果任务已经启动并且用户再次点击该页面,我想说,该任务还没有停止,所以你无法继续。
我该如何解决这个问题?有什么想法吗?
感谢。
答案 0 :(得分:0)
您应该在Code Behind中保留对任务的引用,因此如果Task
尚未处理,则任务尚未完成。
答案 1 :(得分:0)
您可以创建Task
对象(而不是一次运行它)并使用IsCompleted
property检查它是否已完成。或者您可以使用某个线程安全对象(静态字段)来标记该任务正忙。
如果您需要在页面重新加载期间生存任务 - 那么您必须以某种方式保存对该Task
对象的引用(cookie,会话,静态变量,视图状态,缓存,数据库...... )
答案 2 :(得分:0)
像0x49D1写的那样,但是把任务对象放在会话中,不要在网上使用静态字段。