簡體   English   中英

如何從后台工作人員返回到asp.net中的Web UI

[英]how to return from the background worker to web UI in asp.net

當背景工作人員完成時,asp.net中的背景工作人員不會將內容寫入Web UI。 請告訴我原因。 以及如何恢復。

static BackgroundWorker bwProcess; 

[WebMethod()]
public static int GetProgress()
{
      return Percentage;
}

單擊事件發生時后台工作人員啟動

protected void btnClick_Click(object sender, EventArgs e)
    {

        bwProcess = new BackgroundWorker
        {
            WorkerReportsProgress = true,
            WorkerSupportsCancellation = true
        };

        bwProcess.DoWork += new DoWorkEventHandler(bwProcess_DoWork);
        bwProcess.ProgressChanged += new ProgressChangedEventHandler(bwProcess_ProgressChanged);
        bwProcess.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bwProcess_RunWorkerCompleted);

        bwProcess.RunWorkerAsync("AsyncWorker");
    }

為backgroundworker做工作活動

void bwProcess_DoWork(object sender, DoWorkEventArgs e)
        {
            bwProcess.ReportProgress(1);
            for (int i = 0; i <= 100; i++)
            {
                if (bwProcess.CancellationPending) 
                { 
                    e.Cancel = true; 
                    return;
                }
                bwProcess.ReportProgress(i);
                Thread.Sleep(20);
            }

            e.Result = "100 %";
        }

這部分不起作用。 它沒有任何反應

void bwProcess_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {

            Response.WriteFile("D:\\Samples.xlsx");
        }

您已經在DoWork中向e.Result傳遞了一些東西,但在RunWorkerCompleted中卻沒有使用它。

void bwProcess_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
     var text = e.Result as string;
     Response.Write(text);
     Response.WriteFile("D:\\Samples.xlsx");
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM