多线程的学习与GDI的学习
今天又是一周的周五,感觉过的好快,我感觉不是期盼周末的到来,而是感觉现在已经习惯啦每天坐在这里敲代码,其实我是一个性格非常开朗的女生,现在不知道为什么感觉默默地坐在自己位置上面敲代码成为了我习以为常的事情,虽然也有不想这样子的事情,但是我感觉我还要掌握好多啊,现在只是刚开始,跟着老师讲课的步伐慢慢的在前进,可是太多知识的掌握还是依赖于自己的领悟,现在就是感觉太多不懂的知识,是不是开始焦虑我不知道啦,不过我会努力啦。嘿嘿,今天我们学习啦多线程和GDI,下面就总结一下。
一.多线程
在学习多线程前我们需要知道两个名词,进程和线程:
- 进程:就是计算机开启的一个正在运行的软件,在我们的操作系统上称为一个进程。计算机有N个进程;
- 线程:指的是在一个进程里开辟多个功能来同时执行多件任务。
一个进程包含多个线程,线程同时间工作,而一个应用程序仅仅有一个进程;在学习进程时间我们需要使用Process这个类,下面举例说一下进程啦
static void Main(string[] args) { #region MyRegion //Process.Start("devenv"); //通过进程打开vs,而start方法中的参数为进程的名字 #endregion #region MyRegion //Process[] process = Process.GetProcesses(); //在这里是打开计算机上面的所有进程 //foreach (var item in process) //{ // Console.WriteLine(item); //} #endregion #region MyRegion //Process p = new Process(); //ProcessStartInfo info = new ProcessStartInfo(@"C:\Program Files (x86)\Tencent\QQ\QQProtect\Bin\QQProtect.exe"); //在ProcessStartInfo类中实例化对象,并传参为打开进程的路径 //p.StartInfo=info; //p.Start(); // 打开一个进程 //Console.ReadKey(); #endregion }
上面主要学习啦进程的方法,下面就简单的学习下线程的方法,而线程的方法使用Thread这个类,夏敏就创建一个Winform窗体,在其中拖拉一个TextBox和Button,如下所示:
private void btn_Click(object sender, EventArgs e) { Control.CheckForIllegalCrossThreadCalls = false; /*Control(WinForm控件的父类),在这里调用他的方法,该方法的意思是是否跨线程,让他设置为false即可, 当不添加这个方法时间显示的窗体则在调用Console(控制台)时间WinForm窗体不能使用,仅仅Console在计数;*/ Thread th = new Thread(Ran); //线程实例化对象 th.Start(); //调用方法Start } public void Ran() //循环0到1000之间的数字 { for (int i = 0; i < 1000; i++) { this.textBox1.Text = i.ToString(); } }
在举例说一下线程的使用,在生活中我们经常会看到抽奖机,下面我们就简单的制作一个小的抽奖机,嘿嘿,代码如下:
public partial class Form1 : Form { public Form1() { InitializeComponent(); } bool b = false; Thread t= null; private void button1_Click(object sender, EventArgs e) { if (!b) { this.button1.Text = "停止"; b = true; Control.CheckForIllegalCrossThreadCalls = false; t = new Thread(Ran); t.Start(); } else { this.button1.Text = "抽奖"; b = false; t.Abort(); } } public void Ran() { Random r = new Random(); while (true) { this.label4.Text = r.Next(0, 10).ToString(); this.label2.Text = r.Next(0, 10).ToString(); this.label3.Text = r.Next(0, 10).ToString(); } } }
二.GDI的学习
在这里学习啦GDI,这个就是我们在窗体上面可以简单的画图吧,下面简单的实现以下他的功能如下所示:
private void button1_Click(object sender, EventArgs e) { Graphics g = this.CreateGraphics(); //GUI画图类 Pen p = new Pen(Brushes.Blue); //用Pen这个类中的Brushes方法直接调用颜色画笔 g.DrawLine(p, new Point(10, 20), new Point(100, 200)); //调用Graphics类中的方法DrawLine //来画出来一天线条,方法中的参数为起始点和终止点 Point[] num = {new Point(10, 20), new Point(30, 40), new Point(80, 100),new Point(70,80)}; g.DrawLines(p,num); }
这就是今天学习的内容啦,嘿嘿,感觉在学习多线程时间还是和计算机实际联系蛮大的,而不是仅仅的就只能看到我们在环境中写程序,然后在vs中显示,好啦,就写到这里啦嘿嘿。