博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
多线程初探
阅读量:6008 次
发布时间:2019-06-20

本文共 1891 字,大约阅读时间需要 6 分钟。

一.定义

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

二.为什么要使用线程?

    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;        ///         /// 执行计算        ///         private void Count()        {             for (int i = 1; i < 9999; i++)            {                //重点,使用Control类的Invoke方法回调方法                this.Invoke(countDelegate,i.ToString());            }            MessageBox.Show("计算完毕!");        }        ///         /// 为UI线程中的TextBox赋值        ///         ///         private void ShowNum(string message)        {            ShowNumTxt.Text = message;        }        private void ThreadFrm_FormClosing(object sender, FormClosingEventArgs e)        {        }         }}

运行截图:

转载于:https://www.cnblogs.com/the-three/p/3774493.html

你可能感兴趣的文章
tomcat中web.xml各配置项的意义
查看>>
Linux下ftp+ssl实现ftps
查看>>
我的友情链接
查看>>
Java基础 - 第一章 计算
查看>>
CentOS7添加用户账户,授权
查看>>
金蝶kis记账王凭证过账要不要要审核
查看>>
Nodejs学习笔记(二):《node.js开发指南》代码中需要注意的几点
查看>>
Nginx 配置 SSL 及 SSL 证书的创建过程
查看>>
Ztree异步加载自动展开节点
查看>>
应用程序内购买类型
查看>>
大型企业网络构建(二)——高级OSPF&虚链路应用
查看>>
文件系统概念深入介绍及压缩归档工具
查看>>
6个优秀的思维导图网站
查看>>
初识Docker
查看>>
Solaris 10基本命令操作
查看>>
我的友情链接
查看>>
MySQL查询in操作 查询结果按in集合顺序显示
查看>>
arm汇编基础(转)
查看>>
IO流-输入输出流:字节流、字符流、缓冲流、转换流
查看>>
sql字符串插入函数STUFF
查看>>