如何在mvc5中停止页面刷新或页面关闭的后台工作?

时间:2017-07-26 01:48:24

标签: c# asp.net-mvc-5

我有一个MVC5应用程序,它有Excel上传,它将从excel获取大量数据并使用EF将其保存到数据库中。我正在使用backgroundworker上传并取得进展。当用户在文件上传中间点击其他一些链接或页面刷新时,如果他上传了另一个文件,则在新上传的中间显示先前的进度。我的意思是前一个过程不是杀戮。如何解决这个问题?

bwProcess = new BackgroundWorker{ WorkerReportsProgress = true, WorkerSupportsCancellation = true };
bwProcess.DoWork += new DoWorkEventHandler(bwProcess_DoWork);
bwProcess.ProgressChanged += new ProgressChangedEventHandler(bwProcess_ProgressChanged);
bwProcess.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bwProcess_RunWorkerCompleted)‌​;
Task.Run(() => bwProcess.RunWorkerAsync("AsyncWorker2"));

1 个答案:

答案 0 :(得分:0)

最好使用带有Task选项的TaskCreationOptions.LongRunning并且不要对静态实例或"全局"这个过程中的实例。

看看:

var task3 = new Task(() => MyLongRunningMethod(),
                    TaskCreationOptions.LongRunning);
task3.Start();