简单的BackgroundWorker不会更新网页上的标签

wot*_*ney 11 c# asp.net multithreading backgroundworker

我在这个有用的帖子中使用了一段简单的代码

它使用一个按钮和一个标签,标签应报告"10%完成"......"20%完成"......等等.

当我调试时,代码被点击,但我的标签没有在浏览器上更新.

我尝试使用和不使用更新面板,有和没有母版页.

protected void btnStartThread_Click(object sender, EventArgs e)
    {
        BackgroundWorker bw = new BackgroundWorker();

        // this allows our worker to report progress during work
        bw.WorkerReportsProgress = true;

        // what to do in the background thread
        bw.DoWork += new DoWorkEventHandler(delegate(object o, DoWorkEventArgs args)
        {
            BackgroundWorker b = o as BackgroundWorker;

            // do some simple processing for 10 seconds
            for (int i = 1; i <= 10; i++)
            {
                // report the progress in percent
                b.ReportProgress(i * 10);
                Thread.Sleep(1000);
            }
        });



        // what to do when progress changed (update the progress bar for example)
        bw.ProgressChanged += new ProgressChangedEventHandler(delegate(object o, ProgressChangedEventArgs args)
        {
            label1.Text = string.Format("{0}% Completed", args.ProgressPercentage);
        });


        // what to do when worker completes its task (notify the user)
        bw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(
        delegate(object o, RunWorkerCompletedEventArgs args)
        {
            label1.Text = "Finished!";
        });

        bw.RunWorkerAsync();
Run Code Online (Sandbox Code Playgroud)

bru*_*use 5

您可以进行长时间轮询以获取更新的结果.我个人不会在Web应用程序中使用后台工作程序.另外,请考虑查看SignalR,服务器发送事件和异步和等待或任务并行库.