通常在主线程中创建控件。 是否有可能在另一个线程中创建一些子控件?C#我可以在另一个线程中创建控件吗?
3
A
回答
6
tl,dr 不要做。
该控件可以在不同的线程被创建,但是,当它们被添加到父(在不同的线程创建的),然后很可能存在提出了一个跨线程异常。我不确定这个例外是否“保证”,但不这样做。 (有跨线程异常,而不是隐式编组,原因是;以后比死锁更好死。)
跨线程和[winform]控件不混合。当然,如果不同的表单在不同的线程上,并且每个表单的子表单与表单在同一个线程中,并且跨线程访问通过“调用”或类似方式被保护或使用,但表单不是“孩子“控制。
快乐编码。
样品跨线程异常消息:
System.InvalidOperationException:跨线程操作无效:从不是创建它的线程以外的线程访问控制“...”。
3
我不确定你为什么要这样做。我会做的是使用委托回调主线程上的方法,并在那里添加控件。
0
Controls,no。 Forms, yes.
Thread thread = new Thread(() =>
{
var yourForm = new YourForm();
Application.Run(yourForm);
});
thread.ApartmentState = ApartmentState.STA;
thread.Start();
相关问题
- 1. 你可以在C++程序中创建一个.java文件吗?
- 2. 我可以在xcode中编程创建一个.xls文件吗?
- 3. 一个线程可以中断另一个线程吗?
- 4. 我可以在单线程中创建多个Lua VM吗?
- 5. 我可以在另一个线程中加载Nib吗? (iPhone dev)
- 6. 在另一个线程中创建更新控件?
- 7. 我可以在主线程(UI线程)之外创建UI吗?
- 8. 我可以在C中创建一个MATLAB库吗?
- 9. 我可以在C中创建一个Char指针数组吗?
- 10. 我可以创建一个网页来实时控制另一个网页吗?
- 11. 我可以删除在另一个进程中创建的HBITMAP对象吗?
- 12. c#我可以用streamwriter创建一个动态文件名吗?
- 13. 可以在后台线程上创建一个UIViewController吗?
- 14. 我可以创建一个可以修改用户界面的线程吗?我可以放弃吗?
- 15. 我可以使用Python在App Enging中创建线程吗?
- 16. 我可以在Java中创建没有函数的线程吗?
- 17. 我可以在PHP中创建线程吗?
- 18. 我可以限制在ThreadPool中创建线程吗?
- 19. Python - 线程 - 我可以创建线程队列列表吗?
- 20. 可以在线程中创建线程吗?
- 21. 我可以在TestNG的@Factory中创建一个新套件吗?
- 22. 在C++中,可以在一个线程中分配由另一个线程删除的内存吗?
- 23. 我可以使用多个控件创建单个VB6 OCX吗?
- 24. 我们可以在winforms中创建datagridview用户控件吗?
- 25. 在C#中创建一个线程#
- 26. 可以在另一个线程中更改userInteractionEnabled属性吗?
- 27. 我可以向另一个域创建XMLHttpRequest吗?
- 28. 是否可以在另一个应用程序域中创建线程?
- 29. 我们可以在C#中创建自己的过程吗?
- 30. 如何创建一个在C编程中创建另一个线程的线程?
.NET 2.0以上将事实上阻止你这样做。 – leppie
http://stackoverflow.com/questions/7915795/ – Tormod