第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

C# Pogressbar 和后臺工作者

C# Pogressbar 和后臺工作者

C#
繁星淼淼 2021-11-21 14:52:49
單擊按鈕時,我的程序?qū)?zhí)行以下操作: 程序?qū)⑽募?fù)制到臨時文件夾并從臨時文件夾中創(chuàng)建一個 zip 文件。被復(fù)制的文件的路徑存儲在一個數(shù)組中。只是為了讓事情清楚:// "files" has stored the pathsprivate void button2_Click(object sender, EventArgs e){   foreach (var file in files)   {       File.Copy(file, tempPath + @"\" + System.IO.Path.GetFileName(file));   }}我想在我的表單中包含一個進度條,它提供有關(guān)所取得進展的反饋。對于每個復(fù)制的文件,進度條都應(yīng)該移動。我正在為如何以及在何處報告進展而苦苦掙扎。private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e){        int steps = files.Length;        for (int i = 0; i < steps; i++)        {            // Do something...        }}
查看完整描述

3 回答

?
慕運維8079593

TA貢獻1876條經(jīng)驗 獲得超5個贊

您需要在ProgressChanged事件上注冊一個處理程序,并調(diào)用ReportProgress(percentage)該DoWork方法。


例子:


class Program

{

    private static BackgroundWorker _worker;


    static void Main(string[] args)

    {

        _worker = new BackgroundWorker();

        _worker.DoWork += Worker_DoWork;

        _worker.ProgressChanged += Worker_ProgressChanged;

        _worker.WorkerReportsProgress = true;

        _worker.RunWorkerAsync();

        Console.ReadLine();

    }


    private static void Worker_ProgressChanged(object sender, ProgressChangedEventArgs e)

    {

        Console.WriteLine("Progress is {0}", e.ProgressPercentage);

    }


    private static void Worker_DoWork(object sender, DoWorkEventArgs e)

    {

        var worker = (BackgroundWorker)sender;

        for (int i = 0; i < 100; ++i)

        {

            worker.ReportProgress(i); // Reporting progress in percent

            Thread.Sleep(50);

        }

    }

}


查看完整回答
反對 回復(fù) 2021-11-21
?
梵蒂岡之花

TA貢獻1900條經(jīng)驗 獲得超5個贊

  1. MaximumProgressBar的屬性設(shè)置為您的文件數(shù)。這樣您就不必自己計算百分比。

  2. 在復(fù)制文件的循環(huán)中,只需增加ValueProgressBar的屬性即可。

  3. 在UI線程中復(fù)制文件并在后臺線程中更新ProgressBar是沒有意義的,如果真的花費太長時間,則應(yīng)該相反。


查看完整回答
反對 回復(fù) 2021-11-21
?
千萬里不及你

TA貢獻1784條經(jīng)驗 獲得超9個贊

我自己想通了:對于每個擁有數(shù)組并希望使用進度條和后臺工作人員的人(可能有更好的方法):


private void Button (object sender, EventArgs e)

    {

        backgroundWorker1.RunWorkerAsync();

    }


void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)

    {

            var files = Directory.GetFiles(startPath, "*" + filetype, SearchOption.AllDirectories);

            int max = files.Length;

            int i = 0;


        foreach (var file in files)

        {

            File.Copy(file, tempPath + @"\" + System.IO.Path.GetFileName(file));

            backgroundWorker1.ReportProgress((i * 100) / max);

            i++;

        }

    }


查看完整回答
反對 回復(fù) 2021-11-21
  • 3 回答
  • 0 關(guān)注
  • 185 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號