C# 多线程HttpListern恢复休眠线程

C# 多线程HttpListern恢复休眠线程,c#,.net,multithreading,httplistener,C#,.net,Multithreading,Httplistener,我有一个HttpListener,它为收到的每个请求启动一个winform并返回一个表示图像的字节数组。一旦winform执行从请求的查询字符串解析的一些命令,它就会拍摄此图像。任何winforms都在不同的线程中执行 现在,在winform完成它的工作之后,它会拿出一个字节数组作为响应,然后它的线程就死了,如果同一个用户发出一个新请求,那么将创建一个具有新winform的新线程 我猜我是否可以维护每个线程,使用每个用户IP地址的ID、GUID、cookie,这样我就不必每次都重新创建winfo

我有一个HttpListener,它为收到的每个请求启动一个winform并返回一个表示图像的字节数组。一旦winform执行从请求的查询字符串解析的一些命令,它就会拍摄此图像。任何winforms都在不同的线程中执行

现在,在winform完成它的工作之后,它会拿出一个字节数组作为响应,然后它的线程就死了,如果同一个用户发出一个新请求,那么将创建一个具有新winform的新线程

我猜我是否可以维护每个线程,使用每个用户IP地址的ID、GUID、cookie,这样我就不必每次都重新创建winform,同时winform将保持以前的状态


可能吗?或者我必须转移到另一个方向或设计?

您可以将设计更改为工作者/任务方法,分别定义工作者池线程+窗体和任务池。完成后,您可以决定是创建新的线程/表单对来处理任务,还是重用现有的线程/表单对。您可以选择要运行的工作线程数,以限制过度消耗服务器资源的风险。但是,正如shf301所指出的,在服务器端使用Winforms绝对不是最好的方法。

为什么在服务器应用程序中使用Winforms?这是我的项目的一个限制,每个winform都使用OpenGL在屏幕上绘制要捕获的内容并返回给客户端。@JasonMenny-实际上不需要演示图面;在backbuffer中执行所有操作并将其渲染为图像。