-
c#教程之线程的创建
本站最新发布 Python从入门到精通|Python基础教程
试听地址 https://www.xin3721.com/eschool/
(1) 新建项目。在窗体中放置4个按钮和一个标签控件,属性Name分别为button1、button2、button3、button4和label1,按钮属性Text分别为新线程、挂起、恢复和撤销。button1属性Enabled=true,其余按钮的属性Enabled=false。
(2) 在Form1.cs头部增加语句:using System.Threading。
(3) 为Form1类定义一个线程类变量:private Thread thread;
(4) 为新线程按钮(button1)增加单击事件函数如下:
thread= new Thread(new ThreadStart(fun);//生成线程类对象
label1.Text=”0”;
thread.Start();
button1.Enabled=false;
button2.Enabled=true;
button3.Enabled=false;
button4.Enabled=true;
(5) 为挂起按钮(button2)增加单击事件函数如下:
thread. Suspend();
button1.Enabled=false;
button2.Enabled=false;
button3.Enabled=true;
button4.Enabled=false;
(6) 为恢复按钮(button3)增加单击事件函数如下:
thread. Resume();
button1.Enabled=false;
button2.Enabled=true;
button3.Enabled=false;
button4.Enabled=true;
(7) 为撤销按钮(button4)增加单击事件函数如下:
if(thread.IsAlive())
{
thread.Abort();//撤销线程对象
button1.Enabled=true;
button2.Enabled=false;
button3.Enabled=false;
button4.Enabled=false;
}
(8) C#线程模型由于允许将任何一个原型为void类型的公有类成员方法(静态或非静态)作为线程方法,因此它实际上允许在任何一个类(不要求这个类是某个类的子类)中实现线程方法,而且同一个类中可以实现多个线程方法。为Form1类定义一个方法如下:
public void fun()//在线程中执行的方法,必须为公有void类型方法,不能有参数。
{
while(true)//死循环,线程将一直运行
{
int x=Convert.ToInt(label1.Text);
x++;
label1.Text=Convert.ToString(x);
thread.Sleep(1000);//休眠1秒钟,休眠一次,线程运行了1秒钟
}
}
(9) 编译,运行,按新线程(Button1)按钮,新线程开始,计数器从0开始计数。按挂起(Button2)按钮,线程暂停,计数器也暂停。按恢复(Button3)按钮,线程重新启动,计数器也重新计数。按撤销(Button4)按钮,线程对象被撤销,线程对象不存在,计数器停止计数。
试听地址 https://www.xin3721.com/eschool/
7.1 线程的创建
例子:多线程程序设计,该程序包括一个子线程,在标签控件中显示子线程运行的时间。增加4个按钮,分别单击按钮,可以建立、挂起、恢复和停止线程。(1) 新建项目。在窗体中放置4个按钮和一个标签控件,属性Name分别为button1、button2、button3、button4和label1,按钮属性Text分别为新线程、挂起、恢复和撤销。button1属性Enabled=true,其余按钮的属性Enabled=false。
(2) 在Form1.cs头部增加语句:using System.Threading。
(3) 为Form1类定义一个线程类变量:private Thread thread;
(4) 为新线程按钮(button1)增加单击事件函数如下:
thread= new Thread(new ThreadStart(fun);//生成线程类对象
label1.Text=”0”;
thread.Start();
button1.Enabled=false;
button2.Enabled=true;
button3.Enabled=false;
button4.Enabled=true;
(5) 为挂起按钮(button2)增加单击事件函数如下:
thread. Suspend();
button1.Enabled=false;
button2.Enabled=false;
button3.Enabled=true;
button4.Enabled=false;
(6) 为恢复按钮(button3)增加单击事件函数如下:
thread. Resume();
button1.Enabled=false;
button2.Enabled=true;
button3.Enabled=false;
button4.Enabled=true;
(7) 为撤销按钮(button4)增加单击事件函数如下:
if(thread.IsAlive())
{
thread.Abort();//撤销线程对象
button1.Enabled=true;
button2.Enabled=false;
button3.Enabled=false;
button4.Enabled=false;
}
(8) C#线程模型由于允许将任何一个原型为void类型的公有类成员方法(静态或非静态)作为线程方法,因此它实际上允许在任何一个类(不要求这个类是某个类的子类)中实现线程方法,而且同一个类中可以实现多个线程方法。为Form1类定义一个方法如下:
public void fun()//在线程中执行的方法,必须为公有void类型方法,不能有参数。
{
while(true)//死循环,线程将一直运行
{
int x=Convert.ToInt(label1.Text);
x++;
label1.Text=Convert.ToString(x);
thread.Sleep(1000);//休眠1秒钟,休眠一次,线程运行了1秒钟
}
}
(9) 编译,运行,按新线程(Button1)按钮,新线程开始,计数器从0开始计数。按挂起(Button2)按钮,线程暂停,计数器也暂停。按恢复(Button3)按钮,线程重新启动,计数器也重新计数。按撤销(Button4)按钮,线程对象被撤销,线程对象不存在,计数器停止计数。
最新更新
python中装饰器修复技术
python中filter、map、reduce的区别
python爬虫--cookie反爬处理
Python 模拟 Base64编码
证明task线程是来源于线程池的,线程重用
Python基础总结之第一天(新手可相互督促
Django:web认识,jinja2模块,如何安装Djang
tcp服务端无线为多个客户端服务
python自动化测试之DDT数据驱动
python输出九九乘法表
基于UDP的服务器端和客户端
再谈UDP和TCP
在socket编程中使用域名
网络数据传输时的大小端问题
socket编程实现文件传输功能
如何优雅地断开TCP连接?
图解TCP四次握手断开连接
详细分析TCP数据的传输过程
图解TCP数据报结构以及三次握手(非常详
TCP协议的粘包问题(数据的无边界性)
存储过程用法
MySQL教程之SQL ORDER BY 子句
MySQL教程之SQL AND & OR 运算符
MySQL教程之SQL WHERE 子句
MySQL教程之SQL SELECT DISTINCT 语句
MySQL教程之SQL SELECT 语句
MySQL教程之SQL语法
MySQL教程之SQL 简介
MySQL教程之MySQL之pymysql
MySQL教程之mysql设置不区分大小写