最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

深入淺析WinForm 進(jìn)程、線程及區(qū)別介紹

 更新時(shí)間:2016年09月04日 17:17:26   作者:無(wú)毒不羈  
進(jìn)程是一個(gè)具有獨(dú)立功能的程序關(guān)于某個(gè)數(shù)據(jù)集合的一次運(yùn)行活動(dòng)。線程,有時(shí)被稱為輕量級(jí)進(jìn)程(Lightweight Process,LWP),是程序執(zhí)行流的最小單元。這篇文章主要介紹了WinForm 進(jìn)程、線程的相關(guān)資料,需要的朋友可以參考下

一、進(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");   //打開計(jì)算器
Process.Start("mspaint");   //打開畫圖
Process.Start("iexplore" , "http://www.baidu.com");  //打開瀏覽器并指定地址

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

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

Process p = new Process();

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

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

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

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

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

private void button1_Click(object sender, EventArgs e)
{
//這是選擇文件的類型
openFileDialog1.Filter = "應(yīng)用程序|*.exe";
//顯示對(duì)話框并且判斷用戶有沒有選中文件
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)
{
//打開該程序
//取該程序文件的路徑
//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)建線程:

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

Thread th = new Thread( 里面寫線程要操作的方法,方法名不含括號(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 ;
    ......
  }

以上所述是小編給大家介紹的WinForm 進(jìn)程、線程及區(qū)別介紹,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • vs2012創(chuàng)建的ado.net模型無(wú)法實(shí)例化的解決方案

    vs2012創(chuàng)建的ado.net模型無(wú)法實(shí)例化的解決方案

    本文給大家分享的是升級(jí)vs2012后,發(fā)現(xiàn)創(chuàng)建數(shù)據(jù)模型無(wú)法實(shí)例化使用,嘗試了很多種方法,最后在度娘的幫助下,才解決了這個(gè)問(wèn)題,這里記錄下來(lái),分享給大家。
    2015-03-03
  • ASP.NET?MVC使用異步Action的方法

    ASP.NET?MVC使用異步Action的方法

    這篇文章介紹了ASP.NET?MVC使用異步Action的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-10-10
  • VS2010發(fā)布Web網(wǎng)站技術(shù)攻略

    VS2010發(fā)布Web網(wǎng)站技術(shù)攻略

    本篇文章主要包含了完整的發(fā)布網(wǎng)站步驟、發(fā)布網(wǎng)站過(guò)程中可能遇到的問(wèn)題,以及配套的解決方法,相信感興趣的朋友一定會(huì)喜歡這篇文章的
    2015-07-07
  • asp.net網(wǎng)站實(shí)現(xiàn)接入QQ登錄示例代碼

    asp.net網(wǎng)站實(shí)現(xiàn)接入QQ登錄示例代碼

    相信大家在做開發(fā)的時(shí)候,常會(huì)遇到集成QQ登錄的功能,本文主要說(shuō)的是利用asp.net代碼的實(shí)現(xiàn)方式,邏輯部分主要還是根據(jù)幫助文檔來(lái)的。不懂的同學(xué)可以先看看文檔。下面來(lái)一起學(xué)習(xí)學(xué)習(xí)。
    2016-08-08
  • 如何使用 .NET 創(chuàng)建新的 WPF 應(yīng)用

    如何使用 .NET 創(chuàng)建新的 WPF 應(yīng)用

    本文介紹了如何使用.NET創(chuàng)建新的WPF應(yīng)用,并向窗口添加控件,通過(guò)處理控件事件,可以為應(yīng)用提供功能,感興趣的朋友跟隨小編一起看看吧
    2024-11-11
  • IIS上部署Asp.net core Webapi的實(shí)現(xiàn)步驟

    IIS上部署Asp.net core Webapi的實(shí)現(xiàn)步驟

    ASP.NET Core Web API是構(gòu)建RESTful應(yīng)用程序的理想平臺(tái),本文主要介紹了IIS上部署Asp.net core Webapi的實(shí)現(xiàn)步驟,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-07-07
  • Asp.net在頁(yè)面間傳遞大量數(shù)據(jù)(數(shù)據(jù)表)建議采用的方法

    Asp.net在頁(yè)面間傳遞大量數(shù)據(jù)(數(shù)據(jù)表)建議采用的方法

    能讓數(shù)據(jù)在 兩個(gè)不同站點(diǎn)之間傳遞嗎,針對(duì)這個(gè)問(wèn)題將會(huì)展開本文的探討有想在A站點(diǎn)的數(shù)據(jù)傳遞到B站點(diǎn)的朋友們可以適當(dāng)參考下,或許本文對(duì)你有所幫助
    2013-02-02
  • asp.net中DBNull.Value,null,String.Empty區(qū)別淺析

    asp.net中DBNull.Value,null,String.Empty區(qū)別淺析

    這篇文章來(lái)給大家介紹asp.net中DBNull.Value,null,String.Empty區(qū)別淺析,有需要的同學(xué)可以參考一下
    2013-08-08
  • web.config使用方法指南

    web.config使用方法指南

    這篇文章主要介紹了web.config使用方法,具體格式,注意點(diǎn)等方面,有需要的小伙伴可以參考下。
    2015-05-05
  • Json.net 常用使用小結(jié)(推薦)

    Json.net 常用使用小結(jié)(推薦)

    下面小編就為大家?guī)?lái)一篇Json.net 常用使用小結(jié)(推薦)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-06-06

最新評(píng)論

兴海县| 邵阳市| 峡江县| 仁布县| 台安县| 宣城市| 苏州市| 九龙城区| 四子王旗| 屏南县| 山西省| 营口市| 偃师市| 宿州市| 巩义市| 吐鲁番市| 调兵山市| 西乡县| 芦溪县| 怀安县| 双峰县| 鲁甸县| 平陆县| 五寨县| 观塘区| 长宁县| 东兰县| 微博| 理塘县| 余庆县| 上杭县| 中方县| 河源市| 临清市| 南溪县| 玉环县| 开封市| 阳城县| 横峰县| 双柏县| 洞头县|