我使用以下代码来启动和停止foreach循环执行。但是开始工作正常。停止按钮点击时,我无法停止循环执行。请帮我这样做。
private void btn_start_Click(object sender, EventArgs e)
{
if (txt_rows.Text != "") {
thread = new System.Threading.Thread(new System.Threading.ThreadStart(update));
thread.IsBackground = true;
thread.Start();
}
}
private void Update()
{
//My logic here
}
private void btn_stop_Click(object sender, EventArgs e)
{
lbl_appstatus.Text = "Stop"; // Button click event not fired while run the loop
lbl_appstatus.Update();
lbl_appstatus.ForeColor = System.Drawing.Color.Red;
if (thread != null && thread.IsAlive)
thread.Abort();
}
答案 0 :(得分:0)
在您的代码中,如果您在开始按钮上单击两次或更多,则会丢失以前的线程对象;你不应该创建多个线程。
答案 1 :(得分:0)
"开始"和"停止"点击是对该代码隐藏的单独请求。这些使用
所以在"停止"点击thread
值始终为null
。
对于" InProc"会话,也许它可以在Session中存储该线程值,因此您可以保持跨请求的值。