本篇文章為大家展示了WinForm中進(jìn)程與線程的區(qū)別是什么,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。
在渭南等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都做網(wǎng)站、網(wǎng)站制作 網(wǎng)站設(shè)計制作定制制作,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),營銷型網(wǎng)站,成都外貿(mào)網(wǎng)站建設(shè),渭南網(wǎng)站建設(shè)費用合理。一、進(jìn)程
進(jìn)程是一個具有獨立功能的程序關(guān)于某個數(shù)據(jù)集合的一次運行活動。
它可以申請和擁有系統(tǒng)資源,是一個動態(tài)的概念,是一個活動的實體。
Process 類,用來操作進(jìn)程。
命名空間:using System.Diagnostics;
Process.Start("calc"); //打開計算器 Process.Start("mspaint"); //打開畫圖 Process.Start("iexplore" , "http://www.baidu.com"); //打開瀏覽器并指定地址
(一)通過一個進(jìn)程,打開指定的文件:
1.創(chuàng)建進(jìn)程對象
Process p = new Process();
2.創(chuàng)建一個StartInfo對象,是指定帶盤符的路徑。
ProcessStartInfo psi = new ProcessStartInfo(@"C:\user\.....);
3.進(jìn)程指定及開始
p.StartInfo = psi; //指定路徑 p.Start(); //開始進(jìn)程
(二)通過文件選擇框讓用戶自己選擇所需要打開的程序并打開:
private void button1_Click(object sender, EventArgs e) { //這是選擇文件的類型 openFileDialog1.Filter = "應(yīng)用程序|*.exe"; //顯示對話框并且判斷用戶有沒有選中文件 if (openFileDialog1.ShowDialog() == DialogResult.OK) { //取文件路徑 string path = openFileDialog1.FileName; //創(chuàng)建一個新的進(jìn)程 Process p = new Process(); //制造進(jìn)程的啟動信息 ProcessStartInfo psf = new ProcessStartInfo(path); //設(shè)置該進(jìn)程的執(zhí)行信息 p.StartInfo = psf; //啟動進(jìn)程 p.Start(); } }
例子:注銷
//這個path就是你要調(diào)用的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; //造一個進(jìn)程 Process p = new Process(); //造一個進(jìn)程的啟動信息 ProcessStartInfo ps = new ProcessStartInfo(path); //設(shè)置進(jìn)程啟動信息 p.StartInfo = ps; //啟動進(jìn)程 p.Start(); //關(guān)閉程序 this.Close(); }
例:窗口實現(xiàn)鼠標(biāo)拖動
private int x; private int y; private void pictureBox1_MouseDown(object sender, MouseEventArgs e) { //鼠標(biāo)點擊時的XY坐標(biāo) x = e.X; y = e.Y; } private void pictureBox1_MouseMove(object sender, MouseEventArgs e) { //判斷鼠標(biāo)按下的是左鍵 if (e.Button == System.Windows.Forms.MouseButtons.Left) { //邊距=當(dāng)前的距離+移動的距離 this.Left = this.Left+(e.X - x); this.Top = this.Top +(e.Y - y); } }
二、線程
線程,有時被稱為輕量級進(jìn)程(Lightweight Process,LWP),是程序執(zhí)行流的最小單元。
區(qū)別:進(jìn)程有自己獨立的資源,線程共用資源。
Thread類, 命名空間:using System.Threading ;
程序默認(rèn)只有一個主線程,如果做復(fù)雜處理,則會出現(xiàn)假死狀態(tài),因為一條線程同時只能做一件事。
多線程的作用:同時做多件事情,節(jié)約時間,后臺運行程序,提高程序的運行效率,也不會使主界面出現(xiàn)無響應(yīng)的情況。
創(chuàng)建線程:
開啟新的線程執(zhí)行哪個函數(shù)
Thread th = new Thread( 里面寫線程要操作的方法,方法名不含括號 );
標(biāo)記這個線程準(zhǔn)備就緒了,可以隨時執(zhí)行,CPU決定執(zhí)行時間
th.Start();
線程分為兩種:
前臺線程 - 只有所有的前臺線程都關(guān)閉才能完成程序關(guān)閉。
后臺線程 - 只要所有的前臺線程都結(jié)束,后臺線程則會自動結(jié)束。
兩者的區(qū)別:應(yīng)用程序必須運行完所有的前臺線程才可以退出;
而對于后臺線程,應(yīng)用程序則可以不考慮其是否已經(jīng)運行完畢而直接退出,所有的后臺線程在應(yīng)用程序退出時都會自動
結(jié)束。
設(shè)置th線程為后臺線程
th . IsBackground = true ;
控件由主線程創(chuàng)建,新線程想要訪問主線程資源,程序默認(rèn)是不允許跨線程訪問的。
取消跨線程訪問限制
在界面Load事件里
Control.CheckForIllegalCrossThreadCalls = false;
FormClosing 事件中:
//判斷新線程是否為null,如果為null,那就自動關(guān)閉了 if(th != null) { //立即結(jié)束線程,但是結(jié)束后就不能再被重新Start了 th.Abort(); }
執(zhí)行帶參數(shù)的函數(shù):
如果線程執(zhí)行的方法需要參數(shù),那么要求這個參數(shù)必須是object類型!
Thread th = new Thread(Test); //參數(shù)名不需要帶括號 th . IsBackground = true; th.Start("123"); //在這里傳入Test函數(shù)所需要的參數(shù)
這樣函數(shù)中就需要強轉(zhuǎn):
private void Test (object s) { string ss = (string) s ; ...... }
上述內(nèi)容就是WinForm中進(jìn)程與線程的區(qū)別是什么,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
本文名稱:WinForm中進(jìn)程與線程的區(qū)別是什么-創(chuàng)新互聯(lián)
標(biāo)題路徑:http://m.newbst.com/article20/dhcejo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航、虛擬主機(jī)、網(wǎng)站設(shè)計公司、網(wǎng)站設(shè)計、網(wǎng)站制作、云服務(wù)器
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容