技术开发 频道

Silverlight 4中四种多线程编程技术

  清单5:

  namespace SilverlightMultiThread

  {

  
public partial class BackgroundWorkerTestPage : Page

  {

  System.ComponentModel.BackgroundWorker _backgroundWorker;

  
public BackgroundWorkerTestPage()

  {

  InitializeComponent();

  _backgroundWorker
= new System.ComponentModel.BackgroundWorker();

  _backgroundWorker.WorkerSupportsCancellation
= true;

  _backgroundWorker.WorkerReportsProgress
= true;

  _backgroundWorker.ProgressChanged
+= new System.ComponentModel.ProgressChangedEventHandler(_backgroundWorker_ProgressChanged);

  _backgroundWorker.DoWork
+= new System.ComponentModel.DoWorkEventHandler(_backgroundWorker_DoWork);

  _backgroundWorker.RunWorkerCompleted
+= new System.ComponentModel.RunWorkerCompletedEventHandler(_backgroundWorker_RunWorkerCompleted);

  }

  
private void btnStart_Click(object sender, RoutedEventArgs e)

  {

  
if (!_backgroundWorker.IsBusy)

  _backgroundWorker.RunWorkerAsync(
"Need Parameter!");

  }

  
private void btnCancel_Click(object sender, RoutedEventArgs e)

  {

  
if (_backgroundWorker.WorkerSupportsCancellation)

  _backgroundWorker.CancelAsync();

  }

  void _backgroundWorker_DoWork(
object sender, System.ComponentModel.DoWorkEventArgs e)

  {

  
for (int i = 0; i < 10; i++)

  {

  
if ((_backgroundWorker.CancellationPending == true))

  {

  e.Cancel
= true;

  break;

  }

  
else
0
相关文章