【问题标题】:how can i write the code for using threading concept in my ASP.Net Application using c#如何使用 c# 在我的 ASP.Net 应用程序中编写使用线程概念的代码
【发布时间】:2014-07-19 01:33:22
【问题描述】:

我正在使用 c#.net 开发 ASP.NET 应用程序。在那我编写了将单个邮件发送到多个 Mail-Id 的代码。 听说我使用 For-loop 继续发送邮件。 所以,听我的问题是, 1. 我想停止或暂停发送邮件,当我点击“停止”按钮???。 2. 是否可以杀死或暂停继续发送邮件的过程。 ???

for (int i = 0; i < B.Length; i++)
                        {            
  if (txt_To.Text == "")
  {
   txt_To.Text = B[i].ToString();

    Methord1(); ////////////// UID ,PWD code

    int k = i + 1;
    Session["num"] = k;
    txt_To.Text = "";
    Label4.Text = Session["NUM"].ToString() + "Mail sent ...";

  }
}

【问题讨论】:

    标签: asp.net process kill


    【解决方案1】:

    如果我对您的问题的理解正确,您已经在一个线程中启动了一个电子邮件进程,并且您希望能够在单击 停止 按钮时终止该线程。对吗?

    这样做的正确方法是创建一个标志,您可以在线程类上设置以“要求”它终止 - 强制终止线程是一件非常可怕的事情。

    因此,使用您现有的方法,我添加了一个 bool 来确定线程是否继续执行。您还需要在您的类定义中使用 bool 来运行所有这些代码:

    private volatile bool KeepRunning = true;
    
    public void SendEmails()
    {
    
        for (int i = 0; i < B.Length; i++)
        {
            if (!KeepRunning) return;         //<--- this is the new line
    
            if (txt_To.Text == "")
            {
                txt_To.Text = B[i].ToString();
    
                Methord1(); ////////////// UID ,PWD code
    
                int k = i + 1;
                Session["num"] = k;
                txt_To.Text = "";
                Label4.Text = Session["NUM"].ToString() + "Mail sent ...";
    
            }
        }
    }
    

    为了能够访问KeepRunning 变量,需要将其标记为volatile,以表明您将从多个线程访问它。现在您可以在一个单独的线程中调用SendEmails() 方法,并且您可以稍后要求它停止。 T

    如果是这种情况,那么您将需要保留对您已在其中启动进程的线程的引用:

    Thread MyThread = new Thread(new ThreadStart("SendEmails"));
    MyThread.Start();
    

    现在线程正在运行和循环。

    要终止线程(在您的“停止”按钮处理程序中或其他),您只需将KeepRunning 设置为 false,下次循环执行时它会自然地退出该行。在继续之前,您还应该等待工作线程重新加入主线程:

    KeepRunning = false;
    MyThread.Join();
    

    请注意这是所有示例代码,未经测试。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-12-29
      • 1970-01-01
      • 2012-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多