110,571
社区成员
发帖
与我相关
我的任务
分享
private void getFile(){
threadWorker = new BackgroundWorker();
threadWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(this.threadWorker_RunWorkerCompleted);
threadWorker.ProgressChanged += new ProgressChangedEventHandler(this.threadWorker_ProgressChanged);
threadWorker.WorkerSupportsCancellation = true;
threadWorker.WorkerReportsProgress = true;
threadWorker.DoWork += new DoWorkEventHandler(DoWork);
threadWorker.WorkerSupportsCancellation = true;
}
private void DoWork(object sender, DoWorkEventArgs e)
{
Init();
byte[] digest = block(fileName);
if (digest != null)
{
//...
}
else
{
// ...
str = "计算已被终止";
}
e.Result = md5Hash;
}
private byte[] block(string fileName)
{
//...
while(true)
{ //...
if (threadWorker.CancellationPending)
{return null}
//...
}
//...
}
private void threadWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
//...
}
private void stop_Click(object sender, EventArgs e)
{
if (threadWorker != null && threadWorker.IsBusy)
{
threadWorker.CancelAsync();
}
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
this.backgroundWorker1.DoWork += new DoWorkEventHandler(DoWork);
this.backgroundWorker1.WorkerSupportsCancellation = true;
//this.backgroundWorker1.RunWorkerAsync();
}
private void button1_Click(object sender, EventArgs e)
{
button1.Enabled = false;
this.backgroundWorker1.CancelAsync();
button1.Enabled = true;
}
private void DoWork(object sender, DoWorkEventArgs e)
{
while (this.backgroundWorker1.CancellationPending == false)
{
if (e.Cancel == true)
{
Console.WriteLine("Cancel");
break;
}
Console.WriteLine(count.ToString());
Application.DoEvents();
}
}
int count = 0;
private void button2_Click(object sender, EventArgs e)
{
count += 1;
this.backgroundWorker1.RunWorkerAsync();
}
}
}
while(! CancelFlag)
while(true)
这句删掉。