• C#多线程实例(C#反应慢时 加个进度条)


    using System.Threading;

    namespace Threading
    {
    public partial class Form1 : Form
    {
    public Form1()
    {
    InitializeComponent();
    }
    BackgroundWorker back = null;
    Thread thread = null;
    Form2 f2 = null;
    private void button1_Click(object sender, EventArgs e)
    {
    back = new BackgroundWorker();
    back.WorkerSupportsCancellation = true;
    back.DoWork += new DoWorkEventHandler(back_DoWork);
    back.RunWorkerCompleted += new RunWorkerCompletedEventHandler(back_RunWorkerCompleted);
    back.RunWorkerAsync();

    //显示进度条 窗体
    f2 = new Form2();
    f2.BgWorker = thread;
    f2.ShowDialog();
    }

    void back_DoWork(object sender, DoWorkEventArgs e)
    {

    thread = Thread.CurrentThread;
    e.Result = Func();// 方法里面的操作;//数据查询操作写这里,就是你比较慢的操作写这里 这里最好不要出现控件
    }

    void back_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
    {
    if (e.Result != null)
    {
    if (f2 != null)
    {
    f2.Close();
    }

    if (thread != null)
    {
    thread = null;
    }
    //查询出来的数据在这里显示 ---- 显示的时候也会卡一下的
    //e.Result 转换成DoWorker事件中传过来的类型
    // MessageBox.Show(e.Result.ToString());
    }
    }

    private string Func()
    {
    string str = String.Empty;
    for (int i = 0; i < 30000; i++)
    {
    str += i.ToString();

    }
    return str;
    }
    }

    显示进度条窗体

    using System.Threading;


    namespace Threading
    {
    public partial class Form2 : Form
    {
    public Form2()
    {
    InitializeComponent();
    }
    private Thread worker = null;

    public Thread BgWorker
    {
    get { return worker; }
    set { worker = value; }
    }

    private void Form2_Load(object sender, EventArgs e)
    {
    this.progressBar1.Style = ProgressBarStyle.Marquee; //进度条
    }



    private void button1_Click_1(object sender, EventArgs e)
    {
    if (worker != null)
    {
    worker.Abort(); // 结束进程
    }
    this.Close();
    }

    private void Form2_FormClosing_1(object sender, FormClosingEventArgs e)
    {
    if (worker != null)
    {
    worker.Abort();
    }
    }

    }
    }



  • 相关阅读:
    fetch用法说明
    正则表达式贪婪与非贪婪模式
    export ,export default 和 import 区别 以及用法
    理解MVC 框架
    HTTP 请求方法介绍
    Http协议--请求报文和响应报文
    一、Web 如何工作的
    前端工程师进阶之路-总纲
    前端知识体系之CSS及其预处理器SASS/LESS
    进度条
  • 原文地址:https://www.cnblogs.com/laojiefang/p/2387278.html
Copyright © 2020-2023  润新知