国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

WCF死鎖三種不同方式介紹

開發(fā) 開發(fā)工具
我們今天在這篇文中為大家總結了三種比較常用的解決WCF死鎖問題的相關方法,希望能夠幫助朋友們在實際開發(fā)中解決問題。

用過WCF的朋友們應該會清楚的認識到,當我們在使用回調(diào)契約時,通常會出現(xiàn)死鎖的情況出現(xiàn)。那么如何才能正確的解決WCF死鎖問題呢?我們今天就為大家詳細介紹了幾種解決方案,供大家參考學習。#t#

例如,當客戶端執(zhí)行服務操作時,向客戶端發(fā)出的調(diào)用會阻塞服務端進程,以等待服務操作執(zhí)行完畢。而在該服務操作中,又獲得了回調(diào)契約對象的引用(或者獲得保存的回調(diào)契約副本),并執(zhí)行回調(diào)操作。由于服務類被配置為單線程訪問,則服務實例是與鎖相關聯(lián)的。如果回調(diào)對象也需要返回同一個鎖的所有權,簡單的說,就是指當回調(diào)的應答消息也需要獲得與服務實例關聯(lián)的相同的鎖時,就會導致死鎖。因為此時服務線程已經(jīng)被阻塞,服務操作正在等待回調(diào)操作執(zhí)行完畢,而回調(diào)操作卻又在等待服務釋放鎖,自然會產(chǎn)生鎖的爭用。

解決WCF死鎖的辦法有三個,一個是將服務配置為允許多線程訪問,但這會增加服務開發(fā)者管理多線程的負擔。第二個方案是將回調(diào)設置為重入(Reentrancy),如下所示:

 

  1. [ServiceBehavior(ConcurrencyModeConcurrencyMode = 
    ConcurrencyMode.Reentrant)]   
  2. class MyService : IMyContract   
  3. {   
  4. public void DoSomething( )   
  5. {   
  6. IMyContractCallback callback = OperationContext.Current. 
    GetCallbackChannel
    <IMyContractCallback>( );  
  7. callback.OnCallback( );   
  8. }   
  9. }   
  10.  

 

所謂“重入”,是指對同步域擁有獨占訪問權的線程A調(diào)用了同步域之外對象的方法,此時,另外的線程B若要訪問該同步域,則線程A將釋放對同步域的鎖,允許線程B進入。直到線程B執(zhí)行完畢并釋放對同步域的鎖后,線程A將重新進入該同步域。配置回調(diào)為重入時,因為服務對象是與線程關聯(lián)的,屬于同步域的對象,而回調(diào)對象則屬于同步域之外的對象。由于服務被配置為重入,則服務調(diào)用回調(diào)引用時會釋放鎖。然后將回調(diào)返回給客戶端,控制權則返回給服務,服務會重入并重新獲取鎖。這樣就解決了死鎖的問題。

第三種方案則是將回調(diào)操作設置為單向操作。此時,回調(diào)調(diào)用不會產(chǎn)生應答消息,服務操作一旦執(zhí)行了回調(diào)操作,就會繼續(xù)執(zhí)行,回調(diào)對象不會爭用與服務實例關聯(lián)的鎖,從而解決了WCF死鎖問題。

  1. interface IMyContractCallback   
  2. {   
  3. [OperationContract(IsOneWay = true)] void OnCallback( );   
  4. }  

在使用回調(diào)對象時,需要考慮到客戶端代理可能會被關閉,如果此時調(diào)用回調(diào),就會引發(fā)一個ObjectDisposedException異常。“因此,對于客戶端而言,當它不再需要接收回調(diào)或者客戶端應用程序已經(jīng)關閉時,***能夠通知服務。”本書給出了解決這一問題的方法,就是為服務契約增加兩個操作Connect()與Disconnect()。其中,Disconnect()正是起到了通知服務的作用,它在客戶端代理關閉的情況下,可以將當前的回調(diào)對象引用從列表中移除。至于Connect()方法則是出于對稱的目的而引入,但引入它還有一個好處是,它可以使得客戶端能夠多次地連接或斷開。實現(xiàn)Connect()與Disconnect()方法的代碼如下:

  1. static List<IMyContractCallback> m_Callbacks = 
    new List<IMyContractCallback>( );   
  2. public void Connect( ) {   
  3. IMyContractCallback callback = OperationContext.Current. 
    GetCallbackChannel
    <IMyContractCallback>( );   
  4. if(m_Callbacks.Contains(callback) == false)   
  5. {   
  6. m_Callbacks.Add(callback);   
  7. }   
  8. }   
  9. public void Disconnect( )   
  10. {   
  11. IMyContractCallback callback = OperationContext.Current. 
    GetCallbackChannel
    <IMyContractCallback>( );   
  12. if(m_Callbacks.Contains(callback) == true)   
  13. {   
  14. m_Callbacks.Remove(callback);   
  15. }   
  16. else   
  17. {   
  18. throw new InvalidOperationException("Cannot find callback");   
  19. }   
  20. }  

以上就是我們?yōu)榇蠹医榻B的幾種不同的WCF死鎖解決方法。

責任編輯:曹凱 來源: IT168
相關推薦

2010-02-04 10:33:40

C++異常傳遞

2010-02-26 13:34:50

WCF編碼機制

2010-02-23 14:24:50

WCF狀態(tài)保存

2010-02-23 09:58:21

WCF客戶端驗證

2009-11-06 10:54:19

WCF服務方式

2018-12-01 09:15:47

物聯(lián)網(wǎng)設備物聯(lián)網(wǎng)IOT

2009-08-20 17:30:02

C#連接字符串

2009-11-06 13:23:27

WCF模式

2019-12-09 10:30:42

Windows 10帳戶Windows

2011-07-22 17:22:20

Spring

2009-12-21 13:37:43

WCF消息交換

2012-07-17 09:16:16

SpringSSH

2024-07-08 09:03:31

2010-02-22 14:18:34

WCF服務驗證

2009-12-22 15:14:33

WCF調(diào)用

2010-04-20 12:00:01

負載均衡技術

2011-04-08 11:13:50

CISCO IOS令牌桶雙桶

2010-06-13 16:04:14

MySQL三種安裝方式

2020-11-01 17:10:46

異步事件開發(fā)前端

2010-03-12 17:52:35

Python輸入方式
點贊
收藏

51CTO技術棧公眾號

国产精品人妖ts系列视频| 国产精品久久久久久久久久免费看| 欧美日韩另类一区| 亚洲精品一线| 青青草国产精品亚洲专区无| 2019av中文字幕| 欧美性天天影视| 中文字幕亚洲电影| 亚洲国产精品综合| 亚洲91视频| 久久99精品视频一区97| h网站久久久| 欧美日韩一区二区三区| 激情 小说 亚洲 图片: 伦| 久久字幕精品一区| 国产美女直播视频一区| 精品视频一二| 日韩国产精品亚洲а∨天堂免| 亚洲欧洲闷骚av少妇影院| 久久久久久久久久美女| 亚洲高清视频一区二区| 欧美美女一区| 久久久久亚洲精品| av成人在线播放| 日韩精品极品在线观看播放免费视频 | 亚洲在线久久| 欧美激情一二区| 亚洲一区二区三区久久久| 亚洲第一福利视频| av超碰免费在线| 欧美丝袜自拍制服另类| 黄色电影免费在线看| 亚洲电影在线免费观看| 日本中文视频| 一区二区三区在线免费播放| 丰满少妇又爽又紧又丰满69| 国产欧美日本一区视频| 手机看片福利日韩| 国产欧美一区二区三区在线看蜜臀 | 久久精品国产2020观看福利| 3d欧美精品动漫xxxx无尽| 亚洲精品国产美女| 欧美办公室脚交xxxx| 精品国产三级a在线观看| 日本一级理论片在线大全| 欧美成人a在线| a级大胆欧美人体大胆666| 精品国产免费一区二区三区四区| 欧美人与性动交α欧美精品济南到| 在线不卡一区二区| 97超碰资源站在线观看| 亚洲国产精品高清久久久| 一区二区三区四区日本视频| 在线视频国产日韩| 7777精品| 91青草视频久久| 亚洲中字在线| 国产经典久久久| 成人一区二区在线观看| 另类小说第一页| 亚洲一区二区三区在线播放| 欧洲天堂在线观看| 欧美mv日韩mv国产网站app| free欧美| 国产aaa精品| 伊人精品视频| 今天免费高清在线观看国语| 久久久不卡影院| 欧美拍拍视频| 亚洲国产精品久久| 日韩三级网址| 91久久久在线| 激情图片小说一区| jizz18女人| 欧美久久婷婷综合色| 国产亚洲精彩久久| 国产精品主播视频| 久久精品999| 亚洲欧美另类动漫| 欧美性大战久久久| 伊人久久精品| 99久久综合狠狠综合久久止| 蜜臀av性久久久久蜜臀av麻豆| 99草草国产熟女视频在线| 欧美日韩在线另类| 日韩在线影院| 国产精品一二三在线| 免费观看一级特黄欧美大片| the porn av| 91精品国产一区二区三区香蕉| 丁香婷婷久久| 91精品国产高清久久久久久91裸体| 国产麻豆精品视频| 在线欧美一级视频| 国产亚洲精品综合一区91| 欧美大片aaaa| 亚洲中文字幕无码av永久| 欧美日韩国内自拍| 国产精品久久久久久妇女| 91中文字幕一区| 99精品1区2区| 黄网页在线观看| 欧美亚洲国产另类| 久久99热这里只有精品| 草久在线视频| 日韩性生活视频| 一区二区三区四区五区精品视频| 玩弄japan白嫩少妇hd| 欧美一三区三区四区免费在线看| 8848成人影院| 91精品国产毛片武则天| 91国模大尺度私拍在线视频| 久久久久毛片免费观看| 午夜精品一区二区三区四区| 亚洲成av人片观看| 日韩三级精品| 狠狠精品干练久久久无码中文字幕| 色综合久久综合| 成午夜精品一区二区三区软件| 日韩和欧美的一区二区| 亚洲国产精品综合小说图片区| 成人日韩av| 色一情一乱一伦一区二区三欧美| 亚洲午夜电影在线| 麻豆精品在线| 大胆欧美熟妇xx| 欧美一级高清大全免费观看| 欧美国产美女| 亚洲欧美国产日韩综合| 中日韩美女免费视频网址在线观看 | 色小子综合网| 日日鲁鲁鲁夜夜爽爽狠狠视频97| 欧美成人女星排行榜| 欧美a级一区| 啊啊啊好爽视频| 欧美区在线播放| 丁香桃色午夜亚洲一区二区三区| 成人影院www在线观看| 91精品视频在线看| 亚洲视频在线一区二区| 国产欧美日韩电影| www.av毛片| 日韩精品在线免费观看视频| 国产亚洲激情| 国产高清视频在线| 国产日韩欧美成人| 亚洲愉拍自拍另类高清精品| 97久久综合精品久久久综合| 欧洲精品在线播放| 欧美大片一区二区三区| 午夜一级在线看亚洲| 69视频在线观看| 国产在线观看一区| 色婷婷av久久久久久久| 欧美激情一区| aⅴ在线视频男人的天堂 | 国产日韩欧美精品电影三级在线 | 成人超碰在线| 日韩三级电影| 日韩精品一区在线观看| 久久精品动漫| 国产黄大片在线观看| 中文字幕超清在线免费观看| 亚洲精品美女久久久久| 国产传媒日韩欧美成人| 国产资源一区| 99草草国产熟女视频在线| 欧美高清不卡在线| 国产精品福利一区二区三区| 日本韩国欧美超级黄在线观看| 成视人a免费观看视频| 国产精品午夜视频| 欧美性生活影院| 美腿丝袜亚洲色图| 深夜视频一区二区| 538在线视频观看| 国产精品6699| 日本高清无吗v一区| 久久久久欧美精品| 怡红院成人在线| 日韩一级片播放| 国产精品综合久久久| 欧美精品色一区二区三区| 久久99这里只有精品| 亚洲伊人精品酒店| 黄色毛片av| 精品久久久久久中文字幕动漫| 亚洲激情第一页| 91一区二区三区在线观看| 久久精品福利| 高清在线观看av| 日本三级中文字幕在线观看| 午夜精品久久久久久久白皮肤| 精品国产乱码久久久久久天美 | 性欧美ⅴideo另类hd| 欧美中文字幕在线观看视频| 51ⅴ精品国产91久久久久久| 欧美色网站导航| 不卡在线视频中文字幕| 欧美高清视频在线观看mv|