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

Task(一度に実行するのではなく)オブジェクトを作成し、IsCompletedプロパティを使用してオブジェクトが完了したかどうかを確認できます。または、スレッドセーフオブジェクト(静的フィールド)を使用して、タスクがビジーであることを示すフラグを立てることができます。

ページのリロード中にタスクを存続させる必要がある場合は、そのTaskオブジェクトへの参照を何らかの方法(Cookie、セッション、静的変数、ビューステート、キャッシュ、データベースなど)で保存する必要があります。

于 2013-01-16T14:05:43.510 に答える
0

コード ビハインド内のタスクへの参照を保持する必要があるため、 が破棄Taskされていない場合、タスクは完了していません。

于 2013-01-16T14:01:10.483 に答える
0

0x49D1 が書いたようにしますが、タスク オブジェクトをセッションに配置し、Web で静的フィールドを使用しないでください。

于 2013-01-16T14:12:41.977 に答える