C#学习细节(四)Task 和Async 和 Await\WPF 加载大数据界面卡死— UI 虚拟化
2021/12/3 14:07:26
本文主要是介绍C#学习细节(四)Task 和Async 和 Await\WPF 加载大数据界面卡死— UI 虚拟化,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1、Task 和Async 和 Await
.net4.0 与.net4.5 及以上有了差异
.net4.0版本:
只能使用Task异步:
1、var loadingTask = new System.Threading.Tasks.Task(delegate
{
//执行代码
});
loadingTask.Start();
2、System.Threading.Tasks.Task.Factory.StartNew(delegate
{
//执行代码
});
.net 4.5 有了Async 和 Await 关键字
可使用这种方式做异步编程
2、WPF 加载大数据界面卡死— UI 虚拟化
当界面需要绑定大数据的数据源时,会出现界面卡顿卡死的体验,
这时就可以用UI 虚拟化技术,WPF自带的
使用ItemsControl 控件时默认没有虚拟化,需要自定Template 和ItemsPanel
.net4.0 版本:
1、Template
(1)必须添加ScrollViewer(必要的)
(2)必须将 CanContentScroll="True" 置为True,也可以在ItemsControl通过依赖属性设置ScrollViewer.CanContentScroll="True"。(必要的)
(3)可以在ItemsControl通过依赖属性设置VirtualizingStackPanel.IsVirtualizing="True" VirtualizingStackPanel.VirtualizationMode="Recycling"(非必要)
<ItemsControl.Template> <ControlTemplate> <Border CornerRadius="10" BorderThickness="1" BorderBrush="LightGray"> <ScrollViewer VerticalScrollBarVisibility="Auto" CanContentScroll="True"> <ItemsPresenter/> </ScrollViewer> </Border> </ControlTemplate> </ItemsControl.Template>
2、ItemsPanel
(1)必须使用虚拟化面板。
官网介绍:
标准虚拟化面板包括WrapGrid和VirtualizingStackPanel。
如果将ItemsControl中的默认面板替换为非虚拟化面板(如VariableSizedWrapGrid或StackPanel),则会为该控件禁用 UI 虚拟化。
官网:Using virtualization with a list or grid (XAML) (Windows) | Microsoft Docs
<ItemsControl.ItemsPanel> <ItemsPanelTemplate> <VirtualizingStackPanel Orientation="Vertical"/> </ItemsPanelTemplate> </ItemsControl.ItemsPanel>
这篇关于C#学习细节(四)Task 和Async 和 Await\WPF 加载大数据界面卡死— UI 虚拟化的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2022-03-01沐雪多租宝商城源码从.NetCore3.1升级到.Net6的步骤
- 2024-11-18微软研究:RAG系统的四个层次提升理解与回答能力
- 2024-11-15C#中怎么从PEM格式的证书中提取公钥?-icode9专业技术文章分享
- 2024-11-14云架构设计——如何用diagrams.net绘制专业的AWS架构图?
- 2024-05-08首个适配Visual Studio平台的国产智能编程助手CodeGeeX正式上线!C#程序员必备效率神器!
- 2024-03-30C#设计模式之十六迭代器模式(Iterator Pattern)【行为型】
- 2024-03-29c# datetime tryparse
- 2024-02-21list find index c#
- 2024-01-24convert toint32 c#
- 2024-01-24Advanced .Net Debugging 1:你必须知道的调试工具