با سلام
این متدها رو برای Start و Stop کردن ترد قرار میدید
private static Thread thread;
public void startProgress()
{
CheckForIllegalCrossThreadCalls = false;
thread = new Thread(new ThreadStart(ShowfrmProgress));
thread.Start();
}
public void endProgress()
{
thread.Abort();
thread = null;
}
این هم به عنوان مثال از while هست:
int i = 0;
public void ShowfrmProgress()
{
while (true)
{
i = i + 1;
this.Text = i.ToString();
}
}
دکمه Start:
private void btnStart_Click(object sender, EventArgs e)
{
startProgress();
}
دکمه Stop :
private void btnStop_Click(object sender, EventArgs e)
{
endProgress();
}
با اینکار فرم هیچ هنگی نمیکنه
میتونید از BackgrounWorker هم استفاده کنید
قبلش خاصیت WorkerSupportsCancellation رو True کنید
int i = 0;
private void btnStart_Click(object sender, EventArgs e)
{
if (!backgroundWorker1.IsBusy)
{
backgroundWorker1.RunWorkerAsync();
}
}
private void btnStop_Click(object sender, EventArgs e)
{
if (backgroundWorker1.IsBusy)
{
backgroundWorker1.CancelAsync();
}
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
while (true)
{
if (backgroundWorker1.CancellationPending)
{
e.Cancel = true;
return;
}
i = i + 1;
//this.Text = i.ToString();
}
}
private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
MessageBox.Show("Complete...");
}
موفق باشید