2

我有一个 asp.net Web 应用程序,并以一种形式使用异步进程。

Task.Run(async () =>
            {
                foreach (ListItem item in cbListFaculties.Items)
                {
                    if (item.Selected)
                    {
                        service.FinishSyncDepartment(actionId, item.Value);
                    }
                }
            });

但我想要做的是,如果任务已经开始并且用户再次点击该页面,我想说,该任务还没有停止,所以你不能继续。

我该如何解决这个问题?任何的想法?

谢谢。

4

3 回答 3

0

您应该在 Code Behind 中保留对任务的引用,因此如果Task尚未处理,则任务尚未完成。

于 2013-01-16T14:01:10.483 回答
0

您可以创建Task对象(而不是立即运行它)并使用IsCompleted属性来检查它是否已完成。或者您可以使用一些线程安全对象(静态字段)来标记该任务正忙。

如果您需要任务在页面重新加载期间继续存在 - 您必须以Task某种方式保存对该对象的引用(cookie、会话、静态变量、视图状态、缓存、数据库......)

于 2013-01-16T14:05:43.510 回答
0

像 0x49D1 写的那样做,但把任务对象放在会话中,不要在网络上使用静态字段。

于 2013-01-16T14:12:41.977 回答