您的位置:首页 > 编程语言 > C#

C# 异步控制进度条

2016-02-17 20:07 399 查看
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;

namespace MyPrograssBar
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

// 定义委托,异步调用
delegate void ShowProgressDelegate(int totalStep, int currentStep);

private void button1_Click(object sender, EventArgs e)
{
ParameterizedThreadStart start = new ParameterizedThreadStart(SetProgress);
Thread progressThread = new Thread(start);
progressThread.IsBackground = true;
progressThread.Start();
}

/// <summary>
/// 设置当前进度
/// </summary>
/// <param name="state"></param>
void SetProgress(object state)
{
for (int i = 1; i <= 100; i++)
{
Thread.Sleep(200);
// 异步调用
this.Invoke(new ShowProgressDelegate(ShowProgress), new object[] { 100, i });
}
}

/// <summary>
/// 刷新进度条
/// </summary>
/// <param name="totalStep"></param>
/// <param name="currentStep"></param>
void ShowProgress(int totalStep, int currentStep)
{
this.progressBar1.Maximum = totalStep;
this.progressBar1.Value = currentStep;

this.label1.Text = this.progressBar1.Value * 100 / progressBar1.Maximum + "%";
}

private void button2_Click(object sender, EventArgs e)
{

ThreadStart start = new ThreadStart(ThreadTest);
Thread testThread = new Thread(start);
testThread.IsBackground = true;
testThread.Start();
}

private void ThreadTest()
{
for (int i = 1; i <= 100; i++)
{
Thread.Sleep(200);
}
MessageBox.Show("Hello world!");
}
}
}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: