日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

关于Application.Lock和Lock(obj)

發(fā)布時(shí)間:2023/11/29 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于Application.Lock和Lock(obj) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.Application.Lock和Application.UnLock一般配對(duì)出現(xiàn),用于鎖住Lock與UnLock之間的所有代碼(注意不光鎖住對(duì)于Application的賦值)。

2.Lock(obj) 于用鎖住obj對(duì)象,obj對(duì)象必須是全局對(duì)象(如:Application)。

Application.Lock/UnLock的使用方法:

Application.Lock();
//其他代碼
Application["value"]?=?1;
//其他代碼
Application.UnLock();

?Lock(obj)的使用方法:

Lock(Application){
//其他代碼
Application["value"]?=?1;
//其他代碼
}

以上兩段代碼的功能是一樣的,都是鎖住代碼段讓代碼段內(nèi)的代碼不會(huì)被多線程同時(shí)執(zhí)行。

它們兩者之間也存在區(qū)別,來(lái)看一下它們的區(qū)別:

網(wǎng)站內(nèi)任何一個(gè)網(wǎng)頁(yè)執(zhí)行Application.Lock的時(shí)候,整站中所有關(guān)于Application的操作都會(huì)被鎖定延時(shí)執(zhí)行。(包括:Application賦值和Application讀取);而Lock(obj)則不會(huì)影響其他沒(méi)有寫(xiě)Lock(obj)的頁(yè)面。

例子:

先來(lái)看看Application.Lock的用法:

?A頁(yè)面:

Application.Lock();
Application["value"]?=?1;
System.Threading.Thread.Sleep(10000);
Application.UnLock();

?B頁(yè)面:

object?value?=?Applcation["value"];

我們先執(zhí)行A頁(yè)面,再執(zhí)行B頁(yè)面。由于Application在A頁(yè)面中被鎖定,所以B頁(yè)面中需要獲取Application中的值則需要等待A頁(yè)面中執(zhí)行完畢才行。

我們?cè)賮?lái)看一下Lock(obj)的用法:

A頁(yè)面:?

lock(Application)
{
Application["value"]?=?1;
System.Threading.Thread.Sleep(10000);
}

B頁(yè)面:

object?value?=?Applcation["value"];
Applcation["value"]?=?2;

我們同樣先執(zhí)行A頁(yè)面,再執(zhí)行B頁(yè)面。你會(huì)發(fā)現(xiàn)A頁(yè)面中Application雖然被鎖定,但是由于在B頁(yè)面并沒(méi)有相應(yīng)Lock代碼,讀取和修改都是成功的。

如果需要把B頁(yè)面鎖住,則需要把B頁(yè)面的代碼修改成:

lock(Application)//B頁(yè)面里也要加入Lock
{
object?value?=?Applcation["value"];
Applcation["value"]?=?2;
}

?

另外:Application和Lock(Application)雖然都可以鎖定Application,但不能互相鎖定,即:在A頁(yè)面中用Application.Lock/UnLock,在B頁(yè)面中用Lock(Application),這樣B頁(yè)面是鎖定不了的,當(dāng)然如果B頁(yè)面中本身就包含了對(duì)Application的讀取和賦值,那么B頁(yè)面也會(huì)被鎖,原因是上面已經(jīng)提到了。

由此可見(jiàn):Application.Lock/UnLock比較安全,因?yàn)樗侨宙i定所有的Application的,而Lock(obj)則更靈活,因?yàn)榱硪豁?yè)面中如果沒(méi)有寫(xiě)Lock(obj)則可以修改其他頁(yè)面Lock住的內(nèi)容,所以寫(xiě)代碼需要我們更認(rèn)真。倒底是用哪個(gè)比較好,就看各位自己的實(shí)際需求了。

?

轉(zhuǎn)載于:https://www.cnblogs.com/lxboy2009/p/5579656.html

總結(jié)

以上是生活随笔為你收集整理的关于Application.Lock和Lock(obj)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。