BackgroundWorker nesnesi ile kolayca yapabilirsiniz. Visual Studio Toolbox içindeki components kısmında BackgroundWorker nesnesini alıp forma sürükleyin.
daha sonra global bir değişken tanımlayın :
bool isStop=false;
daha sonra durdurma butonunun click eventine şu şekilde bir kod ekleyin :
private void btnDurdur_Click(object sender, EventArgs e)
{
// meşgül değilse gerek yok işleme pas geçiyoruz
if (!backgroundWorker1.IsBusy)
{
return;
}
Button btn= sender as Button;
btn.Enable=false;
isStop=true;
}
daha sonra DoWork methodu içine şu şekilde bir kontrol yerleştirin :
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
// sizin döngünüzün başına böyle bir if yerleştirin.
while(true)
{
if (isStop)
{
break;
}
// uzun kodların çalıştığı blok
}
}
daha sonra RunWorkerCompleted methodu içinde durdurma butonunu ve global değişkeni restore edin
private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
isStop=false;
btndurdur.Enable=true;
}