• 多线程初探


    一.定义

        线程是操作系统可以调度的最小单位,线程被包含在进程中,是进程中实际运作的最小单位。一个进程可以只有一个线程,也可以有多个线程。

    二.为什么要使用线程?

        1.优化程序响应,提升用户体验,使用线程可以防止应用程序假死

        2.充分使用CPU资源

    三.线程的简单使用

        线程用来执行进程分配的子任务,该子任务在程序中就体现在执行某一个方法。那么,线程怎么知道执行哪一个方法呢?事实上线程不知道执行哪个方法,因此线程类(Thread)中使用了委托,以达到让线程执行某个方法的目的,线程具体使用步骤如下:

        1.命名空间:using System.Threading;

        2.创建线程需要调用的方法:method

        3.创建线程:Thread thd=new Thread(method);//Thread类提供了名为ThreadStart的委托,public delegate void ThreadStart();。

        4.设置线程状态:thd.Start();

    四.实例:

    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 多线程
    {
        public partial class ThreadFrm : Form
        {
            public ThreadFrm()
            {
                InitializeComponent();
                //强制CLR以安全方式执行线程
                TextBox.CheckForIllegalCrossThreadCalls = true;
                //实例化委托
                countDelegate = new CountDelegate(ShowNum); 
            }
    
            private void btnCount_Click(object sender, EventArgs e)
            {
                thread = new Thread(Count);
                thread.Start();
            }
    
            //声明委托用于以安全方式与UI线程进行通信
            public delegate void CountDelegate(string message);
            //定义委托对象,在构造函数中实例化
            CountDelegate countDelegate = null;
            Thread thread = null;
            /// <summary>
            /// 执行计算
            /// </summary>
            private void Count()
            { 
                for (int i = 1; i < 9999; i++)
                {
                    //重点,使用Control类的Invoke方法回调方法
                    this.Invoke(countDelegate,i.ToString());
                }
    
                MessageBox.Show("计算完毕!");
            }
    
            /// <summary>
            /// 为UI线程中的TextBox赋值
            /// </summary>
            /// <param name="message"></param>
            private void ShowNum(string message)
            {
                ShowNumTxt.Text = message;
            }
    
            private void ThreadFrm_FormClosing(object sender, FormClosingEventArgs e)
            {
    
            }     
        }
    }

    运行截图:

  • 相关阅读:
    CSS布局之盒子模型[二]
    CSS布局之盒子模型[一]
    CSS文本相关之垂直排列[5]
    网站迁移之后,中文路径都变成乱码
    Linux中shell搜索多文件中的字符串
    mysql数据库报错
    使用Flarum轻松搭建自己的论坛
    CSS雪碧图-html优化
    CSS-定位模式
    ul当做div标签的使用
  • 原文地址:https://www.cnblogs.com/the-three/p/3774493.html
Copyright © 2020-2023  润新知