真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

WinForm中進(jìn)程與線程的區(qū)別是什么-創(chuàng)新互聯(lián)

本篇文章為大家展示了WinForm中進(jìn)程與線程的區(qū)別是什么,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過(guò)這篇文章的詳細(xì)介紹希望你能有所收獲。

在渭南等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都做網(wǎng)站、網(wǎng)站制作 網(wǎng)站設(shè)計(jì)制作定制制作,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),營(yíng)銷型網(wǎng)站,成都外貿(mào)網(wǎng)站建設(shè),渭南網(wǎng)站建設(shè)費(fèi)用合理。

一、進(jìn)程


進(jìn)程是一個(gè)具有獨(dú)立功能的程序關(guān)于某個(gè)數(shù)據(jù)集合的一次運(yùn)行活動(dòng)。


它可以申請(qǐng)和擁有系統(tǒng)資源,是一個(gè)動(dòng)態(tài)的概念,是一個(gè)活動(dòng)的實(shí)體。


Process 類,用來(lái)操作進(jìn)程。

命名空間:using System.Diagnostics;


Process.Start("calc");   //打開(kāi)計(jì)算器
Process.Start("mspaint");   //打開(kāi)畫(huà)圖
Process.Start("iexplore" , "http://www.baidu.com");  //打開(kāi)瀏覽器并指定地址

(一)通過(guò)一個(gè)進(jìn)程,打開(kāi)指定的文件:


1.創(chuàng)建進(jìn)程對(duì)象

Process p = new Process();

2.創(chuàng)建一個(gè)StartInfo對(duì)象,是指定帶盤(pán)符的路徑。

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

3.進(jìn)程指定及開(kāi)始

p.StartInfo = psi; //指定路徑
p.Start(); //開(kāi)始進(jìn)程

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


private void button1_Click(object sender, EventArgs e)
{
//這是選擇文件的類型
openFileDialog1.Filter = "應(yīng)用程序|*.exe";
//顯示對(duì)話框并且判斷用戶有沒(méi)有選中文件
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
//取文件路徑
string path = openFileDialog1.FileName;
//創(chuàng)建一個(gè)新的進(jìn)程
Process p = new Process();
//制造進(jìn)程的啟動(dòng)信息
ProcessStartInfo psf = new ProcessStartInfo(path);
//設(shè)置該進(jìn)程的執(zhí)行信息
p.StartInfo = psf;
//啟動(dòng)進(jìn)程
p.Start();
} 
}

例子:注銷


//這個(gè)path就是你要調(diào)用的exe程序的絕對(duì)路徑
string path = Application.StartupPath;
//獲取自身exe或dll的文件名路徑
string s = System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.FullyQualifiedName;
private void button2_Click(object sender, EventArgs e)
{
//打開(kāi)該程序
//取該程序文件的路徑
//string path = Application.StartupPath;
string path = System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.FullyQualifiedName;
//造一個(gè)進(jìn)程
Process p = new Process();
//造一個(gè)進(jìn)程的啟動(dòng)信息
ProcessStartInfo ps = new ProcessStartInfo(path);
//設(shè)置進(jìn)程啟動(dòng)信息
p.StartInfo = ps;
//啟動(dòng)進(jìn)程
p.Start();
//關(guān)閉程序
this.Close();
}

例:窗口實(shí)現(xiàn)鼠標(biāo)拖動(dòng)


private int x;
private int y;
private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
//鼠標(biāo)點(diǎn)擊時(shí)的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)前的距離+移動(dòng)的距離
this.Left = this.Left+(e.X - x);
this.Top = this.Top +(e.Y - y);
}
}

二、線程


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


區(qū)別:進(jìn)程有自己獨(dú)立的資源,線程共用資源。


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

程序默認(rèn)只有一個(gè)主線程,如果做復(fù)雜處理,則會(huì)出現(xiàn)假死狀態(tài),因?yàn)橐粭l線程同時(shí)只能做一件事。


多線程的作用:同時(shí)做多件事情,節(jié)約時(shí)間,后臺(tái)運(yùn)行程序,提高程序的運(yùn)行效率,也不會(huì)使主界面出現(xiàn)無(wú)響應(yīng)的情況。


創(chuàng)建線程:


開(kāi)啟新的線程執(zhí)行哪個(gè)函數(shù) 

Thread th = new Thread( 里面寫(xiě)線程要操作的方法,方法名不含括號(hào) );

標(biāo)記這個(gè)線程準(zhǔn)備就緒了,可以隨時(shí)執(zhí)行,CPU決定執(zhí)行時(shí)間


th.Start();

線程分為兩種:


前臺(tái)線程 - 只有所有的前臺(tái)線程都關(guān)閉才能完成程序關(guān)閉。


后臺(tái)線程 - 只要所有的前臺(tái)線程都結(jié)束,后臺(tái)線程則會(huì)自動(dòng)結(jié)束。


兩者的區(qū)別:應(yīng)用程序必須運(yùn)行完所有的前臺(tái)線程才可以退出;


   而對(duì)于后臺(tái)線程,應(yīng)用程序則可以不考慮其是否已經(jīng)運(yùn)行完畢而直接退出,所有的后臺(tái)線程在應(yīng)用程序退出時(shí)都會(huì)自動(dòng)

結(jié)束。


設(shè)置th線程為后臺(tái)線程 

th . IsBackground = true ;

控件由主線程創(chuàng)建,新線程想要訪問(wèn)主線程資源,程序默認(rèn)是不允許跨線程訪問(wèn)的。


取消跨線程訪問(wèn)限制

在界面Load事件里


Control.CheckForIllegalCrossThreadCalls = false;


FormClosing 事件中:


//判斷新線程是否為null,如果為null,那就自動(dòng)關(guān)閉了
  if(th != null)
  {
    //立即結(jié)束線程,但是結(jié)束后就不能再被重新Start了
    th.Abort(); 
  }

執(zhí)行帶參數(shù)的函數(shù):


如果線程執(zhí)行的方法需要參數(shù),那么要求這個(gè)參數(shù)必須是object類型!


Thread th = new Thread(Test); //參數(shù)名不需要帶括號(hào)
  th . IsBackground = true;
  th.Start("123");         //在這里傳入Test函數(shù)所需要的參數(shù)

這樣函數(shù)中就需要強(qiáng)轉(zhuǎn):

private void Test (object s)
  {
    string ss = (string) s ;
    ......
  }

上述內(nèi)容就是WinForm中進(jìn)程與線程的區(qū)別是什么,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


網(wǎng)站欄目:WinForm中進(jìn)程與線程的區(qū)別是什么-創(chuàng)新互聯(lián)
標(biāo)題網(wǎng)址:http://weahome.cn/article/dhcejo.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部