运行HTTP服务器的c# BackgroundWorker,修改主机线程'
本文关键字:线程 主机 修改 服务器 HTTP BackgroundWorker 运行 | 更新日期: 2023-09-27 18:16:02
这个很难…
我有一个c#应用程序,运行一个HTTP服务器在BackgroundWorker,它允许用户输入数据,应该实时显示到一个主要的形式。HTTP服务器基本上在do/while(true)循环中运行,它总是等待HTTP响应。因此,它必须在BackgroundWorker中运行,以便程序在等待web用户时不会停止响应。但是,当用户输入数据时,我希望后台工作器更新主表单上的数据。
我已经尝试使主表单的功能公开,但这给出了一个运行时异常,因为访问表单控件的线程不是创建它们的线程。
我想过只使用BW的ProgressChanged事件,但是我必须传递很多数据,传递的不仅仅是一个字符串会更好。我可以重写这个方法,如果我可以,我将如何/在哪里做?
谢谢。
继续按原样使用ProgressChanged。传递给userState参数的对象有多大并不重要,只要:
- 它是一个引用类型(也就是说,不是结构体)。
- 后台进程在返回主线程后不修改其内容,以避免竞争条件。