簡體   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