C# 如何在mvc5中停止backgroundworker的页面刷新或页面关闭?

C# 如何在mvc5中停止backgroundworker的页面刷新或页面关闭?,c#,asp.net-mvc-5,C#,Asp.net Mvc 5,我有一个MVC5应用程序,它有Excel上传功能,可以从Excel中获取大量数据,并使用EF将其保存到数据库中。我正在使用backgroundworker上传并取得进展。当用户点击FLUEPROPARD中间的其他链接或页面刷新时,如果他上传了其他文件,则在新上传的中间显示先前的进度。我的意思是,前一个过程不是杀戮。如何解决这个问题 bwProcess = new BackgroundWorker{ WorkerReportsProgress = true, WorkerSupportsCance

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

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"));

最好将
任务
任务创建选项一起使用。长时间运行
并且不要对过程中的静态实例或“全局”实例粗心大意

看看:

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

bwProcess=new BackgroundWorker{WorkerReportsProgress=true,WorkerSupportsCancellation=true};bwProcess.DoWork+=新的DoWorkEventHandler(bwProcess_DoWork);bwProcess.ProgressChanged+=新的ProgressChangedEventHandler(bwProcess\u ProgressChanged);bwProcess.RunWorkerCompleted+=新的RunWorkerCompletedEventHandler(bwProcess\u RunWorkerCompleted);Task.Run(()=>bwProcess.RunWorkerAsync(“AsyncWorker2”));FWIW,作为一种最佳实践,后台工作人员并不适合web应用程序。退房: