Note that there are some explanatory texts on larger screens.

plurals
  1. POCancel backgroundworker
    text
    copied!<p>I have UI which displaying status of long-running operations (downloading some text files from ftp) . For my purposes I use backgroundworker and I can't cancel operation.</p> <pre><code>void worker_DoWork( object sender, DoWorkEventArgs e ) { try { int rowIndex = (int)e.Argument; //begin UI update StartWaitingBar(rowIndex); //get provider id cell GridViewDataRowInfo row = _proivderGridView.Rows[rowIndex]; GridViewCellInfo provIdCell = row.Cells[ "ProviderId" ]; var providerData = GetProviderData(Convert.ToInt32( provIdCell.Value)); var provider = ProviderFactory.CreateProvider(providerData); provider.Synchronize(); e.Result = rowIndex; } catch (Exception exception) { return; } } </code></pre> <p>And code for worker creation:</p> <pre><code> BackgroundWorker worker = new BackgroundWorker(); worker.DoWork += worker_DoWork; worker.RunWorkerCompleted += worker_RunWorkerCompleted; worker.WorkerSupportsCancellation = true; worker.RunWorkerAsync(args.RowIndex); _syncWorkers.Add(providerId,worker); ... var worker = _syncWorkers[providerId]; if(worker.IsBusy) { worker.CancelAsync(); } else { worker.RunWorkerAsync(args.RowIndex); } </code></pre> <p>Solution provided <a href="https://stackoverflow.com/questions/123661/net-how-to-wait-for-a-backgroundworker-to-cancel">here</a> seems not working for me beacuse it works for recurring operations (for which background worker is created, I suppose). Do I have to use threads(abort and join) for my purposes because I should provide possibilities for user to cancel long-running operation?</p> <p>Need your advice.</p> <p>Thanks in advance.</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload