一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - ASP.NET教程 - 深入淺析WinForm 進程、線程及區別介紹

深入淺析WinForm 進程、線程及區別介紹

2020-03-23 14:01無毒不羈 ASP.NET教程

進程是一個具有獨立功能的程序關于某個數據集合的一次運行活動。線程,有時被稱為輕量級進程(Lightweight Process,LWP),是程序執行流的最小單元。這篇文章主要介紹了WinForm 進程、線程的相關資料,需要的朋友可以參考下

一、進程

進程是一個具有獨立功能的程序關于某個數據集合的一次運行活動。

它可以申請和擁有系統資源,是一個動態的概念,是一個活動的實體。

Process 類,用來操作進程。

命名空間:using System.Diagnostics;

?
1
2
3
Process.Start("calc");   //打開計算器
Process.Start("mspaint");   //打開畫圖
Process.Start("iexplore" , "http://www.baidu.com");  //打開瀏覽器并指定地址

(一)通過一個進程,打開指定的文件:

1.創建進程對象

?
1
Process p = new Process();

2.創建一個StartInfo對象,是指定帶盤符的路徑。

?
1
ProcessStartInfo psi = new ProcessStartInfo(@"C:\user\.....);

3.進程指定及開始

?
1
2
p.StartInfo = psi; //指定路徑
p.Start(); //開始進程

(二)通過文件選擇框讓用戶自己選擇所需要打開的程序并打開:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
private void button1_Click(object sender, EventArgs e)
{
//這是選擇文件的類型
openFileDialog1.Filter = "應用程序|*.exe";
//顯示對話框并且判斷用戶有沒有選中文件
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
//取文件路徑
string path = openFileDialog1.FileName;
//創建一個新的進程
Process p = new Process();
//制造進程的啟動信息
ProcessStartInfo psf = new ProcessStartInfo(path);
//設置該進程的執行信息
p.StartInfo = psf;
//啟動進程
p.Start();
}
}

例子:注銷

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//這個path就是你要調用的exe程序的絕對路徑
string path = Application.StartupPath;
//獲取自身exe或dll的文件名路徑
string s = System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.FullyQualifiedName;
private void button2_Click(object sender, EventArgs e)
{
//打開該程序
//取該程序文件的路徑
//string path = Application.StartupPath;
string path = System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.FullyQualifiedName;
//造一個進程
Process p = new Process();
//造一個進程的啟動信息
ProcessStartInfo ps = new ProcessStartInfo(path);
//設置進程啟動信息
p.StartInfo = ps;
//啟動進程
p.Start();
//關閉程序
this.Close();
}

例:窗口實現鼠標拖動

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
private int x;
private int y;
private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
//鼠標點擊時的XY坐標
x = e.X;
y = e.Y;
}
private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
//判斷鼠標按下的是左鍵
if (e.Button == System.Windows.Forms.MouseButtons.Left)
{
//邊距=當前的距離+移動的距離
this.Left = this.Left+(e.X - x);
this.Top = this.Top +(e.Y - y);
}
}

二、線程

線程,有時被稱為輕量級進程(Lightweight Process,LWP),是程序執行流的最小單元。

區別:進程有自己獨立的資源,線程共用資源。

Thread類, 命名空間:using System.Threading ;

程序默認只有一個主線程,如果做復雜處理,則會出現假死狀態,因為一條線程同時只能做一件事。

多線程的作用:同時做多件事情,節約時間,后臺運行程序,提高程序的運行效率,也不會使主界面出現無響應的情況。

創建線程:

開啟新的線程執行哪個函數 

?
1
Thread th = new Thread( 里面寫線程要操作的方法,方法名不含括號 );

標記這個線程準備就緒了,可以隨時執行,CPU決定執行時間

  th.Start();

線程分為兩種:

前臺線程 - 只有所有的前臺線程都關閉才能完成程序關閉。

后臺線程 - 只要所有的前臺線程都結束,后臺線程則會自動結束。

兩者的區別:應用程序必須運行完所有的前臺線程才可以退出;

     而對于后臺線程,應用程序則可以不考慮其是否已經運行完畢而直接退出,所有的后臺線程在應用程序退出時都會自動

結束。

設置th線程為后臺線程 

?
1
th . IsBackground = true ;

控件由主線程創建,新線程想要訪問主線程資源,程序默認是不允許跨線程訪問的。

取消跨線程訪問限制

在界面Load事件里

  Control.CheckForIllegalCrossThreadCalls = false;

FormClosing 事件中:

?
1
2
3
4
5
6
//判斷新線程是否為null,如果為null,那就自動關閉了
 if(th != null)
 {
   //立即結束線程,但是結束后就不能再被重新Start了
   th.Abort();
 }

執行帶參數的函數:

如果線程執行的方法需要參數,那么要求這個參數必須是object類型!

?
1
2
3
Thread th = new Thread(Test); //參數名不需要帶括號
  th . IsBackground = true;
  th.Start("123");         //在這里傳入Test函數所需要的參數

這樣函數中就需要強轉:

?
1
2
3
4
5
private void Test (object s)
 {
   string ss = (string) s ;
   ......
 }

以上所述是小編給大家介紹的WinForm 進程、線程及區別介紹,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務器之家網站的支持!

原文鏈接:http://www.cnblogs.com/ShenG1/p/5839618.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 滑进了柔佳火热紧夹的 | 国产成人综合精品 | bbbbbbaaaaaa毛片 | 美女张开双腿让男人捅 | 特黄级| 东方影库四虎 | 欧美a级v片不卡在线观看 | 精品国产欧美精品v | 操男孩 | 日韩无砖专区2020在线 | 日韩精品1 | 国产精品视频一区二区三区 | 国产剧情一区二区三区 | 娇小异类videos| 美女被狂干 | 黄瓜视频免费 | 国产欧美国产综合第一区 | 毛片一级免费 | 免费一级日本c片完整版 | 精品国产乱码久久久久久人妻 | 国产在线观看人成激情视频 | 美女69xx | 娇喘高潮教室h | 欧美四虎影院 | 国产成人v爽在线免播放观看 | 91精品国产美女福到在线不卡 | 日韩精品亚洲专区在线影视 | 久久综久久美利坚合众国 | 日韩日韩日韩手机看片自拍 | caoporm碰最新免费公开视频 | 毛片亚洲毛片亚洲毛片 | 极品蜜桃臀美女啪啪 | 国产偷啪视频一区 | 星空无限传媒xk8027穆娜 | 亚洲国产成人超福利久久精品 | 4hc44四虎永久地址链接 | 国产高清一区二区 | a片毛片在线免费看 | kk4444了欧美 | 双性np玩烂了np欲之国的太子 | 欧美折磨另类系列sm |