我有一个C#HttpListener,它运行在一个线程上,并解析另一个程序发送给它的数据。我的主要问题不是收到发送到服务器的所有数据。我只假设这是由于它在单个线程上运行的限制。我已经搜索了一个简单的多线程解决方案的高低,因此它可以接收发送给它的数据,然后空手而归。任何将其转换为多线程应用程序的帮助都将非常感激。
private void frmMain_Load(object sender, EventArgs e)
{
Thread t = new Thread(new ThreadStart(ThreadProc));
t.Start();
}
public static void ThreadProc()
{
while (true)
{
WebBot.SimpleListenerExample(new string[] { "http://localhost:13274/" });
//Thread t = new Thread(new ThreadStart(ThreadProc));
//t.Start();
Application.DoEvents();
}
}
答案 0 :(得分:1)
首先要做的是:确认您的假设确实是正确的。你需要检查:
HTTP通过TCP工作,这通常可以保证交付,因此即使需要很长时间,您的服务器也应该获取所有传入的信息。
那就是说,如果你仍然想让这个过程多线程,我会推荐以下设计:
要考虑几个注意事项:
另一种选择是使用线程池。线程池是一个在需要之前休眠的线程池。当侦听器获取传入输入时,它会将其分配给一个空闲线程,或者在需要时将扩大池;这样您就没有队列,并且您的线程得到了最佳使用。
答案 1 :(得分:1)