我有一个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"));
答案 0 :(得分:0)
最好使用带有Task
选项的TaskCreationOptions.LongRunning
并且不要对静态实例或"全局"这个过程中的实例。
看看:
var task3 = new Task(() => MyLongRunningMethod(),
TaskCreationOptions.LongRunning);
task3.Start();