【发布时间】:2010-10-10 20:39:21
【问题描述】:
关于正在进行的设计和实施的几句话
我向远程应用程序发送了很多请求(运行在不同的 主机,当然),并且应用程序发回数据。
关于客户
客户端是一个 UI,它产生一个单独的线程来提交和处理请求。一旦它提交了所有请求,它就会调用Wait。等待将解析应用程序的所有事件并调用客户端的回调。
下面是Wait的实现。
public void Wait (uint milliseconds)
{
while(_socket.IsConnected)
{
if (_socket.Poll(milliseconds, SelectMode.SelectRead))
{
// read info of the buffer and calls registered callbacks for the client
if(_socket.IsAvailable > 0)
ProcessSocket(socket);
}
else
return; //returns after Poll has expired
}
}
Wait 是从一个单独的线程调用的,负责管理网络连接:入站和出站流量:
_Receiver = new Thread(DoWork);
_Receiver.IsBackground = true;
_Receiver.Start(this);
此线程是从应用程序的 UI 组件创建的。
问题:
即使主应用程序已按时发送数据,客户端有时也会看到回调延迟。值得注意的是,轮询中的一条消息被延迟,直到我的客户端断开连接,我在内部调用了:
_socket.Shutdown(SocketShutdown.Both);
我认为 投票
中发生了一些奇怪的事情关于如何解决问题或替代解决方法的任何建议?
谢谢
如果有什么不清楚的地方请告诉我
【问题讨论】:
-
@Adam Devis - 感谢您更正标题中的拼写。
标签: c# .net design-patterns networking sockets