运行HTTP服务器的C#BackgroundWorker,修改主机线程上的控件';s形

运行HTTP服务器的C#BackgroundWorker,修改主机线程上的控件';s形,c#,backgroundworker,C#,Backgroundworker,这是一个艰难的一个 我有一个在BackgroundWorker中运行HTTP服务器的C#应用程序,它允许用户输入数据,这些数据应该实时显示在主窗体上。HTTP服务器基本上运行在do/while(true)循环中,该循环始终等待HTTP响应。因此,它必须在BackgroundWorker中运行,以便程序在等待web用户时不会停止响应。但是,当用户输入数据时,我希望后台工作人员更新主窗体上的数据 我已经尝试将主窗体的函数公开,但这会导致运行时异常,因为访问窗体控件的线程不是创建它们的线程 我曾考虑过

这是一个艰难的一个

我有一个在BackgroundWorker中运行HTTP服务器的C#应用程序,它允许用户输入数据,这些数据应该实时显示在主窗体上。HTTP服务器基本上运行在do/while(true)循环中,该循环始终等待HTTP响应。因此,它必须在BackgroundWorker中运行,以便程序在等待web用户时不会停止响应。但是,当用户输入数据时,我希望后台工作人员更新主窗体上的数据

我已经尝试将主窗体的函数公开,但这会导致运行时异常,因为访问窗体控件的线程不是创建它们的线程

我曾考虑过只使用BW的ProgressChanged事件,但我必须传递大量数据,而且传递的不仅仅是一个字符串会更好。我可以覆盖这个方法吗?如果可以,我将如何/在哪里覆盖它


谢谢。

继续,按原样使用ProgressChanged。作为userState参数传递的对象有多大并不重要,只要:

  • 它是引用类型(即,不是结构)
  • 后台进程在传递回主线程后不会修改其内容,以避免争用情况
许多问题可能重复,请参阅。您需要调用委托方法来更新主线程的控件。这没有帮助。我的问题与那个问题不同,我是问是否有理由只使用ReportProgress/ProgressChanged事件。我想避开代表。到别的地方去。我的打字错误,它的报告进度,没有改变。谢谢我很高兴这是明智的做法。