关于线程的问题C# Windows应用程序
我的程序实现的是每隔10秒就调用TCP连接,向服务器获取数据,这个功能的完成我用到了private   System.Windows.Forms.Timer   timer;控件.在timer的timer_Tick事件里我调用了一个线程: 
 ThreadStart   workerStart=new   ThreadStart(run); 
 Thread   workerThread=new   Thread(workerStart); 
 workerThread.Start(); 
 函数viod   run():是完成TCP连接服务器获取数据的. 
 我的问题:当TCP连接出现异常(异常的可能性:服务器关闭),我想要关掉workerThread线程,程序会自动的不断与服务器连接,当连接成功后,这个线程又再次的启动,请问各位大侠,这个功能我该怎么去完成呢?请赐教,小弟新手,请多多谅解! 
 问题解决马上散分!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
------解决方案--------------------貌似比较难!     
 多线程操作TCP...异常多~
------解决方案--------------------用 
 try  
 catch() 
 捕获操作啊
------解决方案--------------------你现在的做法是不是有代码负责去完成TCP的连接,然后有一个线程利用这个TCP连接去执行操作?这样做是不对的。   
 TCP网络资源应该用的时候去连接,不用的时候立即释放。   
 你把建立TCP连接的操作放在循环的线程中,然后不用Timer,用循环,在循环中判断和上次执行之间的TimeSpan,剩下的就是判断连接是否已经完成,如果没完成TCP连接就不执行延时,即可。
------解决方案--------------------这种程序测试非常麻烦。
------解决方案--------------------我是这样做的: 
             //子线程 
             bool ISOK = false; 
             while (!ISOK) 
             { 
                 try 
                 { 
                     //TcpConnect.Connect(); 
                     //... 
                     //TcpConnect.Close(); 
                     ISOK = true; 
                 } 
                 catch 
                 { 
                     Thread.Sleep(30000);30秒后重试 
                 } 
                 finally 
                 { 
                     TcpConnect.Close(); 
                 } 
             }
------解决方案--------------------出现异常要关闭。则直接在run中return即退出线程。   
 至于“程序会自动的不断与服务器连接,当连接成功后,这个线程又再次的启动” 
 不是很明白楼主所指的是什么?   
 如果有一个线程专门负责连接服务器,当它连成功后,可以使用事件.如:AutoEventHandle等通知别一个线程(此线程可以一直处于等待状态)运行。
------解决方案--------------------定时多次连接绝对不能在timer里面做的   
 开个线程  控制连接的次数和延时   连接失败 就释放等待 
 如果你想一直连接只到成功  就用loop 
 取得数据后 等待10秒  再取数据  不需要再连接了把 
 如果失败  自己再作处理 是退出还是再连接等
------解决方案--------------------tasada 的方法就很好,可以把isok换成次数判断,控制连接的尝试次数
------解决方案--------------------用.NET REMOTING 吧