private void backgroundWorker1_DoWork_ProcessModule(object sender, DoWorkEventArgs e) { // Do not access the form's BackgroundWorker reference directly. // Instead, use the reference provided by the sender parameter. BackgroundWorker bw = sender as BackgroundWorker; // Extract the argument. ConvertXrnsArgs bwArgs = (ConvertXrnsArgs)e.Argument; bw.ReportProgress(0); e.Result = ParseModule(bwArgs.FileType, bw, e); bw.ReportProgress(99, "Writing output file.."); Utility.SaveByteArrayToFile(bwArgs.FileName, (byte[])e.Result); }
private void RunBWorker4WritingModule(string fileName, FileType fileType) { BackgroundWorker1.DoWork -= backgroundWorker1_DoWork_ProcessModule; BackgroundWorker1.DoWork -= backgroundWorker1_DoWork_LoadFile; BackgroundWorker1.DoWork += backgroundWorker1_DoWork_ProcessModule; BackgroundWorker1.RunWorkerCompleted -= backgroundWorker1_RunWorkerCompleted_LoadFile; BackgroundWorker1.RunWorkerCompleted -= backgroundWorker1_RunWorkerCompleted_ProcessModule; BackgroundWorker1.RunWorkerCompleted += backgroundWorker1_RunWorkerCompleted_ProcessModule; ConvertXrnsArgs bwArgs = new ConvertXrnsArgs(); bwArgs.FileName = fileName; bwArgs.FileType = fileType; // call backgroundWorker1_DoWork_ProcessModule // at end backgroundWorker1_RunWorkerCompleted_ProcessModule BackgroundWorker1.RunWorkerAsync(bwArgs); }