一.本次主要对以下3点进行输出
1.线程的创建
2.前台线程与后台线程
3.线程的优先级
二.准备工作
1.using System.Threading;//引用线程类
2.创建winform窗体及控件
窗体布局
三.程序说明
Thread drawthread = null;//定义线程1,并设置其初始为空线程
Thread nihao = null;//定义线程2,并设置其初始为空线程
在启动线程控件槽函数下创建
drawthread = new Thread(new ThreadStart(draw));//设定要执行线程的方法
drawthread.IsBackground = true;//设定为后台线程
drawthread.Start();//线程1开始
drawthread.Priority = ThreadPriority.AboveNormal;//设定线程1的优先级搞于线程2
nihao = new Thread(new ThreadStart(shagua));//设定要执行线程的方法
nihao.IsBackground = false;//设定为前台线程,可以不写,默认为前台线程
nihao.Priority = ThreadPriority.BelowNormal;//设定线程1的优先级搞于线程2
drawthread.Start();//线程2开始
两个线程对应的方法
private void shagua()
{
for (int k = 0; k <= 10; k++)
{
zhizhang(k);
// Thread.Sleep(100);
}
}
private void draw()
{
try
{
for (int i = 0; i <= 1000; i++)
{
test(i);
// Thread.Sleep(1000);
}
catch(System.Exception e1)
{
return;
}
}
向textbox中添加字符串的方法
private void test(int i)
{
// if (textBox1.InvokeRequired)
// {
// drawDelegate d = new drawDelegate(test);
// Invoke(d, new object[] { i });
// }
// else
// {
textBox1.AppendText(i.ToString());//.AppendText(i.ToString() "\r\n");
// }
}
private void zhizhang(int k)
{
textBox1.AppendText(k.ToString());
}
总结:
1.后台线程当前台线程终止了,即使没运行完也会终止;前台线程会一直执行,直到线程终止
2.分优先级时并不是先执行完高优先级的在执行低优先级线程,而是穿插执行,在空闲时也会执行低优先级线程在继续执行高优先级的
3.使用多线程的优点及缺点
优点:会将一个进程分成若干线程,可以分优先级,并发执行,更快;如通信和播放视频两功能穿插执行
利于程序稳定性、模块化
缺点:占用更多系统内存