大家好,我用winform做了个邮件系统,然后在发送的界面上有发送按钮,点击发送按钮,启动一个线程,然后发送。
主要程序如下:
点击按钮事件里:
Thread thread = null;
if(thread == null)
{
      thread = new Thread(new ThreadStart(WriteMail));
      thread.Start();
}//发送函数
public void WriteMail()
{
       try
        {
          if(收件人为空)//,设置发送人姓名
   { 
                MessageBox.Show("收件人为空!");
return;
           }
   else
  {
发送部分
  }
        catch()
        ... ...
       }
}但是我的程序老是有问题。当有收件人的时候,程序能正常运行;没有收件人的时候,执行了return语句,发送界面没有关闭,提示输入收件人,然后等待输入收件人后重新点击发送按钮,但是线程就不对了,线程因该是中断了吧,请问大家,我这样设计是不是有什么问题?或者线程怎么控制?

解决方案 »

  1.   

    //发送函数 
    public void WriteMail() 

       while(true)
       {
         try 
         { 
            if(收件人为空)//,设置发送人姓名 
             {  
               MessageBox.Show("收件人为空!"); 
            } 
            else 
            { 
              发送部分 
             }
         } 
         catch() 
         {
         }
           ... ... 
        } 
      

  2.   

     try 
            { 
              if(收件人为空)//,设置发送人姓名 
               {                MessageBox.Show("收件人为空!");                 //做一窗口输入收件人
              }          发送部分         catch() 
            ... ... 
           } 
      

  3.   

    有异常时应当将线程关闭或挂起,看LZ的代码直接关掉好了,
    thread.Abort();
      

  4.   

    2楼正解,你在线程里没有写循环,RETURN掉当然就没了,线程退出了,如果希望不写循环,你点击发送才有线程的话,每次点击都要做下面的操作
    Thread thread ;
    if(!thread.islive)
    {
    Thread thread = new Thread(new ThreadStart(WriteMail)); 
    thread.Start(); }