我想将winform usercontrol的一部分(也是用户控件)作为线程或甚至是新进程运行。但他们仍然应该处于主要状态。这可能吗?
答案 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将其托管在您自己的窗口中 - 就像这里描述的那样: