C# 停止背景线程
此代码一次成功发送一封电子邮件。 我的问题是在单击C# 停止背景线程,c#,asp.net,multithreading,C#,Asp.net,Multithreading,此代码一次成功发送一封电子邮件。 我的问题是在单击按钮2时停止电子邮件。单击按钮2时,计时器成功显示消息,确认会话[“停止”]等于(“真”)。 然而,电子邮件并没有停止。。有什么帮助吗 protected void Button2_Click(object sender, EventArgs e) { Session["stop"] = "true"; } private void email() { for (int i = 1; i <= amount; i++)
按钮2
时停止电子邮件。单击按钮2
时,计时器成功显示消息,确认会话[“停止”]等于(“真”)
。
然而,电子邮件并没有停止。。有什么帮助吗
protected void Button2_Click(object sender, EventArgs e)
{
Session["stop"] = "true";
}
private void email()
{
for (int i = 1; i <= amount; i++)
{
Thread email = new Thread(delegate ()
{
SendMail(to, from, password, subject, body, amount);
});
email.IsBackground = true;
email.Start();
if (Session["stop"].Equals("true"))
{
email.Abort();
return;
}
}
}
protected void Timer1_Tick(object sender, EventArgs e)
{
if (Session["stop"].Equals("true"))
{
Label1.Text = "Mail stopped. Sent: " + allMailSent;
Session["stop"] = "false";
}
}
protectedvoid按钮2\u单击(对象发送者,事件参数e)
{
会话[“停止”]=“真”;
}
私人电邮()
{
对于(int i=1;i)您使用线程
而不是任务
,有什么原因吗?至于取消,请使用取消令牌
。如果会话[“停止”]。等于(“true”)
是真的
,那么最好的逻辑就是不首先启动线程。在这里,你要启动它,然后立即检查你是否真的是认真的,然后试图杀死它。嗯,我还郑重建议不要在会话中保留控制线程状态的东西。@colim我创建了一个发送命令不回发的l按钮。这为我提供了每封电子邮件的实时计数器sent@spender我觉得会话是每发送一封电子邮件都有一个实时计数器的唯一方式