我可以在另一个线程中创建控件吗?
本文关键字:控件 创建 另一个 线程 我可以 | 更新日期: 2023-09-27 18:13:34
控件通常是在主线程创建的。是否有可能在另一个线程中创建一些子控件?
tl,博士不要。
控件可以在不同的线程上创建,但是,当它们被添加到父线程(在不同的线程上创建)时,
交叉线程和[winform]控件不能混合。当然,如果不同的表单在不同的线程中,并且每个表单的子线程与表单在同一个线程中,并且跨线程访问被保护或通过"invoke"或类似的方式使用……但是表单不是"子"控件。
幸福的编码。
示例跨线程异常消息:
系统。InvalidOperationException:跨线程操作无效:Control '…从创建它的线程以外的线程访问。
我不知道你为什么要这样做。我要做的是使用委托回调主线程上的方法并在那里添加控件。
控件,没有。形式,是的。
Thread thread = new Thread( () =>
{
var yourForm = new YourForm();
Application.Run(yourForm);
});
thread.ApartmentState = ApartmentState.STA;
thread.Start();