在线程或进程中运行Winform Usercontrol

时间:2014-10-14 08:44:28

标签: c# multithreading winforms

我想将winform usercontrol的一部分(也是用户控件)作为线程或甚至是新进程运行。但他们仍然应该处于主要状态。这可能吗?

2 个答案:

答案 0 :(得分:2)

没有。 UserControl,应在主(UI)STA线程上创建所有其他UI元素。期。不允许跨线程操作。

您可以将控件的其他部分带到另一个线程,但只要涉及UI元素(或者访问它们时应使用Control.Invoke)。

对于并行处理,您在.NET中有一些不错的功能,包括Task Parallel Library (TPL),包括Task

因此,对于某些计算,您可以这样做:

Task.Run( () => SomeHeavyMethod(1, 2, 3) );

但在内部,如果不使用Invoke,则无法使用UI元素。

答案 1 :(得分:0)

解决方案是将WinForm作为独立进程启动,然后使用user32.dll将其托管在您自己的窗口中 - 就像这里描述的那样:

CodeProject