0
私はエクセルから巨大なデータを取得し、EFを使用してデータベースに保存するExcelアップロードを持つMVC5アプリケーションを持っています。私はbackgroundworkerを使用してアップロードし、進捗状況を取得しています。ユーザーがファイルアップロードの途中で他のリンクやページの更新をクリックしたときに他のファイルをアップロードすると、新しいアップロードの途中で前の進捗状況が表示されます。前のプロセスが殺されていないということです。この問題を解決するには?mvc5のページリフレッシュまたはページクローズ時にバックグラウンドワーカーを停止するにはどうすればいいですか?
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"));
bwProcess =新規のBackgroundWorker {WorkerReportsProgress =真、 WorkerSupportsCancellation =真 }。 bwProcess.DoWork + =新しいDoWorkEventHandler(bwProcess_DoWork);サブタイプ: bwProcess.RunWorkerCompleted + =新しいRunWorkerCompletedEventHandler(bwProcess_RunWorkerCompleted); Task.Run(()=> bwProcess.RunWorkerAsync( "AsyncWorker2")); –
FWIWは、ベストプラクティスとして、バックグラウンドワーカーはWebアプリケーションには適していません。チェックアウト:https://www.hanselman.com/blog/HowToRunBackgroundTasksInASPNET.aspx – leemac