多线程表单应用程序(.NET 4.0)

时间:2011-01-06 13:51:58

标签: multithreading forms .net-4.0

我目前正在开发一个包含两个项目的解决方案,一个控制台和一个表单应用程序。控制台应用程序是我的应用程序的主要入口点,用户可以从控制台运行表单应用程序。

问题是,当用户启动表单应用程序时,其他业务逻辑(来自控制台应用程序)将不会运行,直到表单关闭。我的第一个想法是为表单使用后台工作程序,但表单项目中的业务逻辑已经使用后台工作程序(我只有两个CPU ...)。也许这可能是我对多线程的无知,但有没有办法做到这一点?

非常感谢任何想法! 干杯

1 个答案:

答案 0 :(得分:2)

嗯,这很不寻常。一般来说,为用户提供一个漂亮的GUI并且仍然保持控制台窗口和交互性是没有多大意义的。

但是,是的,调用Application.Run()或Form.ShowDialog()将阻止该线程。它必须,消息循环需要运行以保持GUI活着。如果这样做,请确保将[STAThread]属性放在Main()方法上。

另一个不错的选择是开始一个线程。这不是问题,UI线程不会刻录任何CPU周期。代码仅在用户执行某些操作时运行,否则在99%的时间内处于空闲状态。确保在启动之前调用线程的SetApartmentState()方法,需要STA。