c# 线程对控件的访问
来源:互联网 发布:古墓丽影崛起设置优化 编辑:程序博客网 时间:2024/04/29 22:00
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;using System.Threading;namespace WindowsFormsApplication4{ public partial class Form1 : Form { public Form1() { InitializeComponent(); } Thread progressBar = null; public delegate void showProgressDelegate(int i); public delegate void showCopyCartoonDelegate(bool isShow); public ManualResetEvent mre = new ManualResetEvent(false); private void setProgressBar(int i) { progressBar1.Value = i; } private void showProgressBarThread() { showProgressDelegate sid = new showProgressDelegate(setProgressBar); for(int i=0;i<10000;i++) { Invoke(sid, i); Thread.Sleep(1); mre.WaitOne(); } } private void runBtn_Click(object sender, EventArgs e) { if (progressBar != null && progressBar.IsAlive) progressBar.Abort(); progressBar = new Thread(new ThreadStart(showProgressBarThread)); mre.Set(); progressBar.Start(); } private void pauseBtn_Click(object sender, EventArgs e) { mre.Reset(); } private void resumeBtn_Click(object sender, EventArgs e) { mre.Set(); } private void Form1_Load(object sender, EventArgs e) { progressBar1.Minimum = 0; progressBar1.Maximum = 10000; } private void quitBtn_Click(object sender, EventArgs e) { if (progressBar != null && progressBar.IsAlive) progressBar.Abort(); this.Close(); } }}