欧美成人精品手机在线观看_69视频国产_动漫精品第一页_日韩中文字幕网 - 日本欧美一区二区

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

C# 異步操作方法的實現

admin
2021年2月4日 16:36 本文熱度 3380
C#使用BackgroundWorker執行異步操作的例子,簡單的例子,操作開在另一個線程上運行的事件處理和程序,輸入線程數,可看到兩個線程執行的進度會不一樣,運行之后的效果見如圖所示。
using System;
using System.Collections;
using System.ComponentModel;
using System.Drawing;
using System.Threading;
using System.Windows.Forms;

namespace ExecuteAsynchronismFunction
{
    public partial class frmBackgroundWorker : Form
    {
        public frmBackgroundWorker()
        {
            InitializeComponent();
        }
        private int numberToCompute = 0;
        private int highestPercentageReached = 0;

        // 操作開在另一個線程上運行事件處理和序
        private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
        {
            e.Result = ComputeFibonacci((int)e.Argument, this.backgroundWorker1, e);
        }
    
        private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
        {
            this.progressBar1.Value = e.ProgressPercentage;
        }
        
        //
        private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            if (e.Error != null)
            {
                MessageBox.Show(e.Error.Message);
            }
            else if (e.Cancelled)
            {
              
                resultLabel.Text = "Canceled";
            }
            else
            {
                resultLabel.Text = e.Result.ToString();
            }
            this.numericUpDown1.Enabled = true;

            startAsyncButton.Enabled = true;
            cancelAsyncButton.Enabled = false;
        }
        
        //
        private void startAsyncButton_Click(object sender, EventArgs e)
        {
            resultLabel.Text = String.Empty;
            this.numericUpDown1.Enabled = false;
            this.startAsyncButton.Enabled = false;
            this.cancelAsyncButton.Enabled = true;
            numberToCompute = (int)numericUpDown1.Value;
            highestPercentageReached = 0;
            backgroundWorker1.RunWorkerAsync(numberToCompute);
        }
        
        //
        long ComputeFibonacci(int n, BackgroundWorker worker, DoWorkEventArgs e)
        {
            if ((n < 0) || (n > 91))
            {
                throw new ArgumentException(
                    "value must be >= 0 and <= 91", "n");
            }
            long result = 0;
            if (worker.CancellationPending)
            {
                e.Cancel = true;
            }
            else
            {
                if (n < 2)
                {
                    result = 1;
                }
                else
                {
                    result = ComputeFibonacci(n - 1, worker, e) +
                             ComputeFibonacci(n - 2, worker, e);
                }

                // Report progress as a percentage of the total task.
                int percentComplete =
                    (int)((float)n / (float)numberToCompute * 100);
                if (percentComplete > highestPercentageReached)
                {
                    highestPercentageReached = percentComplete;
                    worker.ReportProgress(percentComplete);
                }
            }
            return result;
        }

        private void cancelAsyncButton_Click(object sender, EventArgs e)
        {
            this.backgroundWorker1.CancelAsync();
            cancelAsyncButton.Enabled = false;
        }

        private void frmBackgroundWorker_Load_1(object sender, EventArgs e)
        {

        }
    }
}



該文章在 2021/2/4 16:36:47 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved