我有一个HttpListener,对于每个收到的请求,都会启动一个winform并返回一个表示图像的字节数组。一旦执行从请求的查询字符串解析的某些命令,该图像由winform获取。任何winforms都在不同的Thread中执行。
现在,在winform完成其工作之后,它会出现一个byte数组作为响应,然后它的线程就会死掉,如果同一个用户发出一个新请求,则会创建一个新线程(带有一个新的winform)。
我猜我是否可以维护每个线程,使用每个用户的ID(IP地址,GUID,cookie),所以我不必每次都重新创建winform,同时winform将保持以前的状态。
有可能吗?或者我必须转向另一个方向或设计?
答案 0 :(得分:0)
您可以将设计更改为工人/任务方法,分别定义工作池(线程+表单)和任务池。完成后,您可以决定创建新的线程/表单对来处理任务或重用现有任务,您可以选择要运行的工作者数量,从而限制过度消耗服务器资源的风险。但是,正如shf301
指出的那样,在服务器端使用Winforms绝对不是最佳方式。