【问题标题】:Multithreading HttpListern resume sleeping thread多线程 HttpListern 恢复睡眠线程
【发布时间】:2011-11-10 17:01:45
【问题描述】:

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

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

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

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

【问题讨论】:

  • 为什么在服务器应用程序中使用 WinForms?
  • 这是我项目的一个约束,每个winform,使用OpenGL,在屏幕上绘制一些东西被捕获并返回给客户端。
  • @JasonMenny - 你实际上并不需要演示界面;在后台缓冲区中执行所有操作并将其渲染为图像。

标签: c# .net multithreading httplistener


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2018-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-08
    • 2014-07-29
    • 2015-06-28
    • 1970-01-01
    相关资源
    最近更新 更多