按钮单击时启动和停止循环

时间:2014-05-12 05:15:51

标签: c# asp.net multithreading foreach

我使用以下代码来启动和停止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();
}

2 个答案:

答案 0 :(得分:0)

在您的代码中,如果您在开始按钮上单击两次或更多,则会丢失以前的线程对象;你不应该创建多个线程。

答案 1 :(得分:0)

"开始"和"停止"点击是对该代码隐藏的单独请求。这些使用单独的实例,这通常意味着两个单独的"线程"变量(你没有显示声明)。

所以在"停止"点击thread值始终为null

对于" InProc"会话,也许它可以在Session中存储该线程值,因此您可以保持跨请求的值。