当我在sql server或oracle中运行hasy查询时如何增加progressBar?

时间:2009-12-04 09:43:12

标签: c#

我的查询需要一些时间才能看到结果。

我怎样才能增加进度栏直到我得到结果?

(在C#中工作)提前感谢

2 个答案:

答案 0 :(得分:2)

您是否有任何迹象表明它何时完成,例如得到“迄今为止的结果”?如果没有,您希望使用ProgressBar设置为StyleProgressBarStyle.Marquee - 这将自动设置动画,您只需要在之后停止它。请注意,您需要启用视觉样式。

显然,您应该在后台线程中执行查询(例如,通过BackgroundWorker),以避免阻止UI线程。

如果您的整体查询实际上包含多个步骤,那么您可以通过指示其实际走了多远来使您的进度条更有用......但我完全理解通常情况并非如此。

以下是使用选框样式的示例:

using System;
using System.Drawing;
using System.Windows.Forms;

public class Test
{
    public static void Main(String[] args)
    {
        Application.EnableVisualStyles();
        Button start = new Button {
            Text = "Start",
            Location = new Point(10, 30)
        };
        Button stop = new Button {
            Text = "Stop",
            Location = new Point(10, 60)
        };

        ProgressBar bar = new ProgressBar {
            Style = ProgressBarStyle.Marquee,
            Location = new Point(10, 90),
            MarqueeAnimationSpeed = 20,
            Visible = false
        };
        Form form = new Form {
            Size = new Size(100, 200),
            Controls = { start, stop, bar }
        };
        start.Click += (s, a) => bar.Visible = true;
        stop.Click += (s, a) => bar.Visible = false;
        Application.Run(form);
    }
}

答案 1 :(得分:2)

您可以使用线程,或者,如果问题是您获得了大量数据,请在阅读时使用DataReader并更新您的progressBar。