为了明天

时光匆匆流逝, 笑看风起云落 - 流浪的狗2006

关于Timer使用,为什么程序会死掉

private void TM_Tick(object sender, System.EventArgs e)
{
 listener.Start();
 client = listener.AcceptTcpClient();
 ns = client.GetStream();
 byte[] bytes = new byte[1024];
 int bytesRead = ns.Read(bytes,0,bytes.Length);
 string chatshow = Encoding.UTF8.GetString(bytes,0,bytesRead);
 string[] arr = chatshow.Split('|');
 //ns.Write(bytes,0,bytes.Length);
 TB_Show.Text += DateTime.Now+" "+arr[1] + "\r\n";
 TB_Show.AppendText("");
 TB_Show.ScrollToCaret();
}
在csdn上问过了,说是client = listener.AcceptTcpClient();这句会一直监听,程序就一直等到,直到有连接进来才中止,可是怎么解决呢?现在还没想到,郁闷!

posted on 2004-09-01 18:29 流浪的狗 阅读(1108) 评论(4)  编辑 收藏 所属分类: Dotnet C#

评论

#1楼  2004-09-02 19:50 铁匠 [未注册用户]

监听开始后,如果有数据到的话,应该会有事件触发的,而不是用定时器来检查.
还有,这个不是死了,而是程序一直在等待数据来,所以就定在那里了,如果要防止这种情况发生,要用线程来做了.定两个线程,让一个线程来监听,另一个线程去做其它的事情,然后轮换.   回复  引用    

#2楼  2004-09-02 20:55 边城浪子      

这个线程的概念我实在是一点都不懂啊
工作方面主要是做一些WEB编程方面的东西
WIN下面的纯属个人兴趣,有时间了才去研究研究   回复  引用  查看    

#3楼  2004-09-03 12:34 铁匠 [未注册用户]

我回去又想了一下这个问题,感觉线程还是不行,还是要等待。感觉
listener这个应该是有消息到的时候有事件的。不知道你的这个listener 是什么东西?查一下MSDN什么的,应该是可以找到。
正常情况下,应该是有数据到这个监听的控件时候,系统就会发消息然后触发一个数据到来的事件的。   回复  引用    

#4楼  2004-11-12 15:37 Toyshop Studio      

没听说过这个东西放到timer里执行的   回复  引用  查看    


标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
"五向定位"职业成长路线公开课(上海、南京、大连)
Google站内搜索


相关链接: