UWP应用程序中的VirtualizingObservableCollection

时间:2016-05-27 18:35:18

标签: wpf uwp

我正在尝试在UWP应用程序中使用VirtualizingObservableCollection。它是一个PCL库,所以我希望我可以直接链接它并使用它。我从来没有做过WPF,也不是UWP和XAML的新手。

该集合的部分初始化是以下代码:

if ( !VirtualizationManager.IsInitialized )
{
    //set the VirtualizationManager’s UIThreadExcecuteAction. In this case
    //we’re using Dispatcher.Invoke to give the VirtualizationManager access
    //to the dispatcher thread, and using a DispatcherTimer to run the background
    //operations the VirtualizationManager needs to run to reclaim pages and manage memory.
    VirtualizationManager.Instance.UIThreadExcecuteAction = a => Dispatcher.Invoke( a );
    new DispatcherTimer( TimeSpan.FromSeconds( 1 ),
                         DispatcherPriority.Background,
                         delegate
                         {
                           VirtualizationManager.Instance.ProcessActions();
                         },
                         Dispatcher ).Start();
}

我的第一个问题是它到底在做什么?

我知道我们正在使用lambda表达式,并且(a)“转到”Dispatcher.Invoke(a),但是(a)DispatchTimer? UIThreadExectuteAction是否成为Dispatch.Invoke调用?是否传递给Dispatch.Invoke我们设置的是什么?

我的第二个问题是,在UWP中,Dispatcher.Invoke不存在,我可以用await dispatcher.RunAsync(...)代替。我想我可以以某种方式将Dispatcher.RunAsyc包装在一个Task中,但是UIThreadExcecuteAction是一个Action。

是否可以将其翻译为在Windows Universal App中使用?

0 个答案:

没有答案