繁体   English   中英

在后台线程中创建wpf控件

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM