KING_314 2010年08月06日
C#的Winform程序假死
额 我不知道怎么描述这个问题啊 就是运行程序的时候form无法显示出来 ,点击没有反应。根据代码运行,执行第一次可以看到界面,但是循环执行的时候就会无法显示出来。注:做的是TCP/IP端口通信的。本人才疏,那个整了3-4天了,只能进行基本的数据发送与接收。这个还是在加了messageBox的情况下,界面才显示出来。去掉messageBox之后便会出现假死的情况。非常郁闷。。。。

具体接收部分代码如下:(通过监测本机的8000端口,查看是否有连接)

int portNum = 8000;
bool done = false;

TcpListener listener = new TcpListener(portNum);

listener.Start();
TcpClient client = listener.AcceptTcpClient();
NetworkStream ns = client.GetStream();
while (!done)
{
Console.Write("Waiting for connection...");
ReceiveLB.Items.Add("Waiting for connection...");
//TcpClient client = listener.AcceptTcpClient();

Console.WriteLine("Connection accepted.");
ReceiveLB.Items.Add("Connection accepted.");

byte[] byteTime = Encoding.ASCII.GetBytes(DateTime.Now.ToString());

byte[] buff=new byte[1000];
try
{
if (client==null)
{
client = listener.AcceptTcpClient();
ns = client.GetStream();
}
//写数据
ns.Write(byteTime, 0, byteTime.Length);
//ReceiveLB为listbox,采用线程的话会报线程中无法调用
ReceiveLB.Items.Add("send:"+System.Text.Encoding.ASCII.GetString(byteTime));
MessageBox.Show(System.Text.Encoding.ASCII.GetString(byteTime));
//读数据
ns.Read(buff, 0, buff.Length);
ReceiveLB.Items.Add("receive:" + System.Text.Encoding.ASCII.GetString(buff));
MessageBox.Show(System.Text.Encoding.ASCII.GetString(buff));
//ns.Close();
//client.Close();
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}

}

client.Close();
listener.Stop();
-----分割线-----

我希望能将接收到得数据保存至数据库,但是现在有个问题是当我长时间不点击messagebox时,会出现若干个重复数据串123456 123456 ......(发送端数据为123456)

额 希望有TCP/IP编程经验的高手指点下 有相关C#的源代码请发qxw88@163.com。谢谢


...全文
536 点赞 收藏 16
写回复
16 条回复

还没有回复,快来抢沙发~

发动态
发帖子
C#
创建于2007-09-28

8.4w+

社区成员

64.0w+

社区内容

.NET技术 C#
社区公告
暂无公告