已关闭。此问题需要details or clarity。当前不接受答案。
**想要改进此问题?**添加详细信息并通过editing this post阐明问题。
八年前就关门了。
Improve this question
我需要使用Thread2的结果在Thread1中为WinForm生成GUI。
但是,线程1应从线程2开始。
如果Thread2的结果等于1,我需要在我的WinForm上显示一个网格。如果不是,我需要在我的WinForm上显示一个选项卡控件。
已关闭。此问题需要details or clarity。当前不接受答案。
**想要改进此问题?**添加详细信息并通过editing this post阐明问题。
八年前就关门了。
Improve this question
我需要使用Thread2的结果在Thread1中为WinForm生成GUI。
但是,线程1应从线程2开始。
如果Thread2的结果等于1,我需要在我的WinForm上显示一个网格。如果不是,我需要在我的WinForm上显示一个选项卡控件。
4条答案
按热度按时间ffvjumwh1#
UI线程必须生成它,或者至少将它添加到窗体中。
但在线程2中,您可以收集所有必需的信息或控件,并通过调用或作为
BackgroundWorker
结果将它们传递给UI线程。balp4ylt2#
您应该只保留一个UI线程,并且永远不要在另一个线程中创建任何UI元素。
Microsoft有许多关于此主题的文章,并演示了处理异步操作的正确方法,例如
http://msdn.microsoft.com/en-us/library/ms951089.aspx
oxcyiej73#
如果我理解正确的话,需要在一个线程中创建GUI元素,以便以后在GUI线程中使用它们。
据我所知,这是不可能的,因为控制记住了创建它的线程,然后检查是否在该线程内进行了调用。
我建议你只在后台线程中生成数据,并将其传递给gui线程,在那里你可以绑定这些数据或生成ui元素来表示它,而且这符合关注点分离的最佳实践。
Lex Li已经在评论中发布了link,专门讨论将数据传递到GUI线程的问题。
eanckbw94#
我不确定,我可以正确理解您的问题,但这里是在不同线程中创建UI控件的代码。