今天又是一周的周五,感覺過的好快,我感覺不是期盼周末的到來,而是感覺現在已經習慣啦每天坐在這里敲代碼,其實我是一個性格非常開朗的女生,現在不知道為什么感覺默默地坐在自己位置上面敲代碼成為了我習以為常的事情,雖然也有不想這樣子的事情,但是我感覺我還要掌握好多啊,現在只是剛開始,跟着老師講課的步伐慢慢的在前進,可是太多知識的掌握還是依賴於自己的領悟,現在就是感覺太多不懂的知識,是不是開始焦慮我不知道啦,不過我會努力啦。嘿嘿,今天我們學習啦多線程和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中顯示,好啦,就寫到這里啦嘿嘿。