zoukankan      html  css  js  c++  java
  • c# 多线程基本操作

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    using System.Threading;

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


            
    private void Form1_Load(object sender, EventArgs e)
            
    {
                button2.Enabled 
    = false;
            }


            
    //声名一个线程
            public Thread t;

            
    public delegate void upUI();

            
    private void button1_Click(object sender, EventArgs e)
            
    {
                progressBar1.Value 
    = 0;
                button1.Enabled 
    = false;
                button2.Enabled 
    = true;
                
    //实列化一个线程
                t = new Thread(new ThreadStart(doThread));
                
    //设置是否是后台执行的线程
                t.IsBackground = true;
                
    //开始执行这个线程
                t.Start();

            }


            
    private void doThread()
            
    {
                
    //更新UI委托
                upUI upui = new upUI(upDataUi);
                
                
    try
                
    {
                    
    while (true)
                    
    {
                        Thread.Sleep(
    0);
                        
    //开始更新UI
                        this.Invoke(upui);
                    }

                }

                
    finally
                
    {
                    Thread.Sleep(
    5000);
                }

            }


            
    private void button2_Click(object sender, EventArgs e)
            
    {
                
    //设置为终止状态
                t.Abort();
                
    //阻塞这个线程
                t.Join();
                button1.Enabled 
    = true;
                button2.Enabled 
    = false;
            }

            
    /// <summary>
            
    /// 执行UI更新的方法
            
    /// </summary>

            private void upDataUi()
            
    {
                
    if (progressBar1.Value != 100000)
                
    {
                    progressBar1.Value 
    = progressBar1.Value + 10;
                    label1.Text 
    = progressBar1.Value.ToString();
                }

                
    else
                
    {
                    t.Abort();
                    t.Join();
                    button1.Enabled 
    = true;
                    button2.Enabled 
    = false;
                }


            }

         
            
    private void Form1_FormClosing(object sender, FormClosingEventArgs e)
            
    {
                t.Abort();
                t.Join();
            }

        }

    }
  • 相关阅读:
    swoole入门abc
    PHP实现定时任务(非linux-shell方式,与操作系统无关)
    PHP经典算法题
    lumen使用CORS解决跨域问题
    轻松搞定 JS 的this、call和apply
    Nginx与PHP工作原理
    PHP的cURL扩展库使用详解
    PHP 中的 cURL 爬虫实战基础
    jvm误区--动态对象年龄判定
    从源码分析如何优雅的使用 Kafka 生产者
  • 原文地址:https://www.cnblogs.com/wubiyu/p/818810.html
Copyright © 2011-2022 走看看