C#學習筆記(11)- 執行緒類與程序類
阿新 • • 發佈:2018-12-10
為什麼要使用多執行緒?
- 讓計算機“同時”做多件事情,節約時間
- 多執行緒可以讓一個程式“同時”處理多個事情
- 後臺執行程式,提高程式的執行效率,也不會使主介面出現無響應的情況
- 獲得當前執行緒與當前程序
前臺執行緒與後臺執行緒
- 前臺執行緒:只有所有的前臺執行緒關閉才能完成程式關閉
- 後臺執行緒:只要所有的前臺執行緒結束,後臺執行緒自動結束
執行緒的問題
- 如何實現多執行緒?
- 如何一個執行緒設定為後臺執行緒?
- 如何跨執行緒訪問?//這裡標註的只是最初級的方法,還有其他方法,以後再試
- 關閉主執行緒時,由於種種原因無法同時關閉後臺執行緒,導致後臺執行緒還在訪問窗體裡的控制元件。導致報錯怎麼辦?
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
Thread th;
private void button1_Click(object sender, EventArgs e)
{
//建立一個執行緒去執行這個方法
th = new Thread(Test);
//標記這個執行緒準備就緒了,可以隨時被執行,具體什麼時候執行這個執行緒
//由CPU決定
//前臺執行緒與後臺執行緒
//前臺執行緒關閉,後臺執行緒自動關閉
th.IsBackground = true;
th.Start();
}
private void Test()
{
for (int i = 0; i < 10000; i++)
{
//Console.WriteLine(i);
textBox1.Text = i.ToString();
}
}
private void Form1_Load(object sender, EventArgs e)
{
//跨執行緒訪問,禁止檢查
Control.CheckForIllegalCrossThreadCalls = false;
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if(th !=null)
{
th.Abort();
}
}
}
程序類
程序類的常用方法如下:
//開啟應用程式
Process.Start("notepad");
//通過一個程序開啟指定的檔案
//建立一個ProcessStartInfo類
ProcessStartInfo ps = new ProcessStartInfo(@"C:\Users\lones\Desktop\PITest.txt");
//建立一個Process類
Process p = new Process();
//將ps類賦值給startinfo
p.StartInfo = ps;
p.Start();
Console.ReadKey();