我有一个WPF C#应用程序,它解析并加载1Gig文本文件。此应用程序解析文本文件的当前加载时间约为27秒。 因此,我想制作一个覆盖圆形对话框,显示在ListBox中间加载的过程。 完成加载后,圆形对话框必须消失。
是否可以将其保留为单线程应用程序?
我花了最近几天的时间在网上寻找可能的解决方案。如果可能的话我会看到它的方式然后它必须是UserControl,但我还没有找到任何直接的解决方案?
我的ListBox AXML:
<ListBox x:Name="listBoxTrackers" HorizontalAlignment="Left" Height="448" Margin="30,46,0,0" VerticalAlignment="Top" Width="740" SelectionChanged="listBoxTrackers_SelectionChanged" MouseDoubleClick="listBoxTrackers_MouseDoubleClick">
[put the dialog overlay here]
</ListBox>
答案 0 :(得分:1)
您使用的是哪个版本的.NET?从4.0开始,您通常会创建一个异步函数来读取文本文件,调用该函数来获取任务,显示一个覆盖在正在等待的控件上的动画控件,然后等待您返回的任务,并隐藏完成时再次动画。
当然,更好的方法是显示进度控件,并让您的文本文件解析器发布您分配给进度控件的进度状态,以便您的用户可以看到解析的进度。当然,您也可以在加载时在列表控件中显示结果。
有很多选项,但它们都是某种形式的多线程,但你不应该害怕 - wpf用户界面就是为此而构建的。
换句话说,看看这里的答案: WPF ProgressBar usage when using Async/Await