C# 长时间运行查询的进度条
C# 长时间运行查询的进度条,c#,crystal-reports,progress-bar,C#,Crystal Reports,Progress Bar,我将VS2005与C#一起使用。我有一个大约需要25到30秒的查询,并用crystal report显示结果。 我想在执行查询时显示进度条。 我的情况与 我按照那篇文章中的步骤操作,但进度栏是空白的。 请查看我的代码并建议需要什么。 简单, 你实际上没有报告任何进展 请参阅:简单 你实际上没有报告任何进展 参见:方法1:显示进度(0%至100%) 只需在DoWork方法中调用ReportProgress void bgw_DoWork(object sender, DoWorkEventArg
我将VS2005与C#一起使用。我有一个大约需要25到30秒的查询,并用crystal report显示结果。
我想在执行查询时显示进度条。
我的情况与
我按照那篇文章中的步骤操作,但进度栏是空白的。
请查看我的代码并建议需要什么。 简单, 你实际上没有报告任何进展 请参阅:简单 你实际上没有报告任何进展 参见:方法1:显示进度(0%至100%) 只需在
DoWork
方法中调用ReportProgress
void bgw_DoWork(object sender, DoWorkEventArgs e)
{
int percentComplete = 0;
// Do work and let the work increment percepercentComplete as it's busy.
bgw.ReportProgress(percentComplete);
}
这意味着您必须更改getData1
方法,因为它很忙,所以需要分块报告进度
方法2:无进度百分比(仅表示忙)
如果不想更改getData1
,请在ProgressBar
上将IsInderminate
属性设置为true
progressBar1.IsInderminate = true;
那么您根本不需要bgw\u ProgressChanged
方法<代码>DoWork和RunWorkerCompleted
就足够了
编辑:
抱歉,我以为是WPF。对于.NET 2,您正在使用WinForms
WinForms:在设计器中的ProgressBar
上,将样式更改为字幕
方法1:显示进度(0%到100%)
只需在DoWork
方法中调用ReportProgress
void bgw_DoWork(object sender, DoWorkEventArgs e)
{
int percentComplete = 0;
// Do work and let the work increment percepercentComplete as it's busy.
bgw.ReportProgress(percentComplete);
}
这意味着您必须更改getData1
方法,因为它很忙,所以需要分块报告进度
方法2:无进度百分比(仅表示忙)
如果不想更改getData1
,请在ProgressBar
上将IsInderminate
属性设置为true
progressBar1.IsInderminate = true;
那么您根本不需要bgw\u ProgressChanged
方法<代码>DoWork
和RunWorkerCompleted
就足够了
编辑:
抱歉,我以为是WPF。对于.NET 2,您正在使用WinForms
WinForms:在设计器中的
ProgressBar
上,将Style
更改为Marquee
。OP我想这需要从内部调用getData()
@MickyDuncan,希望OP的正确用法是一个练习。我真希望人们在这里提出“为我做”问题之前先阅读教程。这些天来,当你手牵着手的时候,你会感到悲伤。我听到了,伙计。所以政策是,你可以给他们足够的钱让他们走上正轨“任何能让提问者走上正确方向的答案都是有帮助的”。不管怎样,我是贪婪的。OP我想这需要从内部调用getData()
@MickyDuncan,希望OP的正确用法是一个练习。我真希望人们在这里提出“为我做”问题之前先阅读教程。这些天来,当你手牵着手的时候,你会感到悲伤。我听到了,伙计。所以政策是,你可以给他们足够的钱让他们走上正轨“任何能让提问者走上正确方向的答案都是有帮助的”。无论如何+1在DoWork方法中将数据分配给datatable后添加ReportProgress不会给出所需的输出。由于查询执行时间长,进度条在很长时间后开始填充。需要的输出是什么?更新进度是您的责任,因为您只调用了一个函数,所以您唯一的选择是@Niels Filter Method 2在DoWork Method中将数据分配给datatable后添加ReportProgress,而不提供所需的输出。由于查询执行时间长,进度条在很长时间后开始填充。需要的输出是什么?更新进度是您的责任,因为您只调用了一个函数,所以您唯一的选择是@Niels Filter Method 2tanks以获得答案。但我找不到IsUnderminate属性,是因为我使用的是.NETFramework2吗?我如何编辑getData1方法,因为它只是一个sql语句,并使用dataAdapter.fill方法,而不包括任何循环或许多进程。现在假设WinForms(.NET 2)?请参阅更新的答案:在designer中,将ProgressBar样式更改为Marquee
。您好,Niels Filter,非常感谢您的帮助。我现在将进度条样式更改为字幕。我仍然想知道如何在不循环的情况下使用ReportProgress。我在网上发现的只是使用循环,我的函数没有循环,但只有一个查询,并使用数据适配器将结果填充到数据表中。请提出建议。如果您想在不循环的情况下调用ReportProgress
,另一个选项是将getData1
拆分为多个部分或查询,然后在每次查询后调用ReportProgress
。谢谢您的回答。但我找不到IsUnderminate属性,是因为我使用的是.NETFramework2吗?我如何编辑getData1方法,因为它只是一个sql语句,并使用dataAdapter.fill方法,而不包括任何循环或许多进程。现在假设WinForms(.NET 2)?请参阅更新的答案:在designer中,将ProgressBar样式更改为Marquee
。您好,Niels Filter,非常感谢您的帮助。我现在将进度条样式更改为字幕。我仍然想知道如何在不循环的情况下使用ReportProgress。我在网上发现的只是使用循环,我的函数没有循环,但只有一个查询,并使用数据适配器将结果填充到数据表中。请提出建议。如果您想在不循环的情况下调用ReportProgress
,另一种选择是将getData1
拆分为多个部分或查询,然后在每次查询后调用ReportProgress
。