一个Wsocket类里。开一个线程去接收,接收完后有一个OnFinish事件。然后就在FORm类里进行处理。代码如下: private   void   OnFinish(object sender,int  id)
{
int       i   =         id;
try
{
SocClient[i].Soc.Close();
}
catch(Exception ee)
{
myfile.WriteToFile("关闭时发生错误 :" +ee.ToString(),"关闭Socket");
SocClient[i]   =    null;
return;
}
SocClient[i].OnHttp   -=   new HTTPDelegate(OnHttp);//清除事件
SocClient[i].OnFinish -= new  FinishDelegate(OnFinish);
if(SocClient[i].th !=null)   //关闭线程
if(SocClient[i].th.IsAlive)
SocClient[i].th.Abort(); SocClient[i]   =    null;
myfile.WriteToFile("编号:"+i.ToString()+"关闭","Socket");

}我发现最后运行不到
myfile.WriteToFile("编号:"+i.ToString()+"关闭","Socket");这行代码。如果把线程关闭后,那他所有的事件也会中止吗?我一直认为Onfinish函数在Form类里。所以我认为这个函数的代码和WSocket类里没关系的。大家讨论一下。。

解决方案 »

  1.   

    delegate 你说的意思应该用委托吧。
      

  2.   

    不是用异步的问题,我的意思是不明白用委托从WSocket类到Form类里。把Wsocket类里线程终止后,有一段代码没运行。是不是因为Form类的那个函数是WSocket线程里委托过来的所以就是那个线程的资源?当把那个线程终止后后面的代码就不执行了。我说的意思你们明白吗?不明白给我发消息
      

  3.   

    参看
    http://blog.csdn.net/knight94/archive/2006/03/16/626584.aspx