我有一个包含项目的列表框,用户可以对项目执行某些操作,例如New / Edit / Delete。但是,这可能需要一些时间,而且我希望在执行基础操作时显示不确定的进度条。
我应该如何处理.NET 4.6& C#6.0? 根据{{3}},我应该使用基于任务的异步模式(TAP)。在该主题中有许多可能的解决方案。
这仍然是首选方式吗?
答案 0 :(得分:1)
首先要理解的是,您应该在后台线程上执行“新建”/“编辑”/“删除”操作,以使您的UI保持响应,并使ProgressBar
能够在所需的时间内更新这些操作要完成。
将某些工作卸载到后台线程的首选和最简单方法是使用任务并行库(TPL)并启动新任务。请记住,WPF控件具有线程关联性,因此您只能在最初创建它们的线程上访问它们,这是调度程序线程。
因此,您可以通过将Visibility
的{{1}}属性设置为ProgressBar
来实现此功能,启动执行实际New / Edit / Delete操作的任务,然后设置{{任务完成后,1}}属性再次返回Visible
:
C#:
Visibility
XAML:
Collapsed
答案 1 :(得分:0)
在C#中,您可以使用工具箱中的progressBar工具来显示不确定的时间。
要使用progressBar,只需将其拖放到表单上即可。
现在出现主要问题,你想展示一个不确定的时间。 要显示progressBar中的进度,请使用计时器和以下代码:
int value = 0;
private void timer1_Tick(object sender, EventArgs e)
{
if (value < 100)//value at 100 can be any large integer since indeterminant time
{
value++;
progressBar1.Value = value;
}
}
设置timer1.Interval = 100;
变量值是您为progressBar设置的最大值。
由于您不知道时间,请将progressBar的最大值设置为10000或任何其他大值。 现在,当您输入功能时启用计时器(例如New / Edit / Delete)并在退出功能时禁用计时器