簡體   English   中英

C#Backgroundworker Console寫行

[英]C# Backgroundworker ConsoleWriteline

我有一個簡單的Backgroundworker,想將結果寫入控制台,也想報告該過程。

 class Program
    {
        private static BackgroundWorker worker;
        static int counter;

        static void Main(string[] args)
        {
            worker = new BackgroundWorker();
            worker.WorkerReportsProgress = true;
            worker.RunWorkerAsync();
            Console.ReadLine();
        }

        static void worker_DoWork(object sender, DoWorkEventArgs e)
        {
            while (true)
            {
                counter++;
                worker.ReportProgress(counter);
            }
        }

        static void worker_ProgressChanged(object sender, ProgressChangedEventArgs e)
        {
            Console.WriteLine(counter);
        }

        static void worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {

        }    
    }

但是,如何將我的String(或大於1的String)提供給ReportProcess函數?

您沒有將事件處理程序分配給BackgroundWorker事件:

    static void Main(string[] args)
    {
        worker = new BackgroundWorker();
        worker.DoWork += Worker_DoWork; //here
        worker.ProgressChanged += Worker_ProgressChanged; //and here
        worker.WorkerReportsProgress = true;
        worker.RunWorkerAsync();
        Console.ReadLine();
    }

干杯

您要將計數器作為第一個(int percentProgress)參數傳遞給ReportProgress,您可以使用e.ProgressPercentage如下例所示訪問該參數。 您還可以傳遞第二個(對象userState)參數,該參數可以是字符串或任何其他對象,如下面的示例所示,使用e.UserState訪問。

private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
    backgroundWorker.ReportProgress(100, "Complete!");
}

private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
    toolStripProgressBar.Value = e.ProgressPercentage;
    toolStripStatusLabel.Text = e.UserState as String;
}

請參見https://msdn.microsoft.com/zh-cn/library/system.windows.forms.toolstripprogressbar(v=vs.110).aspx的完整示例

暫無
暫無

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

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