[英]Creating wpf controls in background thread
我必须渲染大约10'000个wpf控件,我不想在此操作期间冻结我的应用程序。 是否可以在另一个线程中执行此操作?
我试着用
myStackPanel.Dispatcher.BeginInvoke(
System.Windows.Threading.DispatcherPriority.SystemIdle,
new NextPrimeDelegate(this.AddButton));
和Dispatcher的另一种变体。 但它总是冻结我的申请。 我想在创建100个控件期间显示动画等待屏幕,但它总是冻结,因为它是调度程序的线程。
谢谢你的帮助安德鲁。
必须在与调度程序关联的线程上创建WPF控件。 对Dispatcher.BeginInvoke
的调用会Dispatcher.BeginInvoke
指定的操作以便稍后在调度程序线程上运行,而不是在后台线程上运行。
如果要创建许多UI控件并希望在创建过程中显示动画,则需要将要完成的工作分段为可以快速处理的小单元。 然后,您可以以低于正常的优先级调用BeginInvoke
,以单独处理每个工作单元。
您需要创建10,000个控件的事实是极端的,您应该调查虚拟化控件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.