我下载了一个简单的Tcp异步聊天室的例子,里面的代码差不多是这样:{
someDelegate d=new someDelegate(...);
IAsyncReuslt r=d.BeginInvoke(...);
while(!r.IsComplete){
thread.sleep(250);
}
d.EndInvoke(...);
}
我想问一下,实际写代码时beginInvoke和EndInvoke是在同一个代码块中的么?还有,这个聊天室服务器,来一个Client就开一个线程,这样好不好?小型通信程序和大型通信程序是不是都这样做?
someDelegate d=new someDelegate(...);
IAsyncReuslt r=d.BeginInvoke(...);
while(!r.IsComplete){
thread.sleep(250);
}
d.EndInvoke(...);
}
我想问一下,实际写代码时beginInvoke和EndInvoke是在同一个代码块中的么?还有,这个聊天室服务器,来一个Client就开一个线程,这样好不好?小型通信程序和大型通信程序是不是都这样做?
解决方案 »
- C# 读取数据库多次访问出错,求教怎么加锁或者其他方法
- C# Winform编程问题
- 高手进!!水晶报表中如何使文本框对象是垂直居中的?
- 为什么ConfigurationManager.AppSettings.Get(key) 得到的值总是一样
- vss 问题
- VS2003里winform关于AxWebBrowser怎么调用一个页面的方法.
- 如何控制winform程序只能打开一个
- C#中的Attributes有什么作用,具体有什么应用,可以通俗的讲一下吗?谢谢
- 请问如何画一个textBox控件???
- C#界面设计问题
- 水晶报表 页面设置为横向时页数多出一倍,而县奇数页为空的
- C# 如何在点击ok前获取调色板选择的颜色
gateWay.SendMessage(message, callback);这就发完了。而callback则可能是public void callback(ReceiveInfo data)
{
.....
}当有信息返回来的时候,才开始进行处理。而这个代码跟Send时的代码往往不是在一个线程上的。程序一旦执行完SendMessage语句,然后就“该干什么还干什么去”,而根本不会进行信号量阻塞,更谈不上弄个while循环啦。