【问题标题】:how to show progress bar in vb.net asp.net while process long如何在 vb.net asp.net 中显示进度条而处理时间很长
【发布时间】:2013-09-17 09:19:57
【问题描述】:

我有一个 SQL 存储过程,它获取一个 mbd 文件并在不到 3 秒的时间内使用它自己导入它,但由于共享服务器的安全性,我不能再这样做了,但我可以使用 vb.net 导入Sql server 的必要临时表并继续该过程
不幸的是,完成该过程需要很长时间(对于 3MegaByte mdb 文件大约需要 3 分钟),我需要向客户端显示该过程,以便客户端可以耐心等待并知道如何这个过程已经过去了。
我已经看到了很多与此相关的事情,但它们都显示的是图像加载而不是确切的进度条,
我的问题是:是否有任何可能的方法来显示进度条,同时基于进程的执行方式?
PS:我可以将显示进度百分比放在 vb.net 的 for 循环中。

编辑:具体来说,我只需要知道如何向客户端显示进度并仅更新 html 中的进度条或者更改进度条宽度样式?

谢谢

【问题讨论】:

    标签: c# asp.net vb.net process progress-bar


    【解决方案1】:

    您可以使用BackGroundWorker

    在使用backgroundWorker的时候,总是方便我用@Keith template

    BackgroundWorker bw = new BackgroundWorker { WorkerReportsProgress = true };
    
    bw.DoWork += (sender, e) => 
       {
           //what happens here must not touch the form
           //as it's in a different thread
    
           //Here you should call the function that does the heavy, slow work.
           //pass the BackgroundWorker instance (bw) as an argument
       };
    
    bw.ProgressChanged += ( sender, e ) =>
       {
           //update progress bars here
       };
    
    bw.RunWorkerCompleted += (sender, e) => 
       {
           //now you're back in the UI thread you can update the form
           //remember to dispose of bw now
       };
    
    worker.RunWorkerAsync();
    

    在你的函数中使用类似的东西更新进度:

        void YourFunction(BackgroundWorker bw)
        {
            for (int i = 0; i < length; i++)
            {
                //do your work
                int percent = (i / length) * 100;
                bw.ReportProgress(percent);
            }
        }
    

    【讨论】:

    • 非常感谢您的回答,但现在唯一的问题是我将如何准确地向客户显示百分比? (记住这是一个 asp.net 网络应用程序)再次感谢。编辑:我在循环中有一个循环,我可以准确地找出正在进行的进度并触发更新进度(百分比);我只需要向客户展示我不知道该怎么做。
    • 其实我没有注意到它是一个 ASP.Net 应用程序。不过,您可以将进度存储在会话中,并使用 Web 服务定期检查它。对于您的网络服务,您需要[WebMethod(EnableSession = true)]
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多