成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

C#調用instance()試圖

開發 后端
這里介紹C#調用instance()試圖,instance()成員方法判斷該類沒有創建唯一實例,于是開始創建實例。由于一些因素,主線程不能馬上創建成功,而需要等待一些時間。

學習C#語言時,經常會遇到C#調用instance()試圖問題,這里將介紹C#調用instance()試圖問題的解決方法。

首先去C#調用instance()試圖獲得類的實例,instance()成員方法判斷該類沒有創建***實例,于是開始創建實例。由于一些因素,主線程不能馬上創建成功,而需要等待一些時間。此時線程1也去調用instance()試圖獲得該類的實例,因為此時實例還未被主線程成功創建,因此線程1又開始創建新實例。結果是兩個線程分別創建了兩次實例,對于計數器類來說,就會導致計數的值被重置,與Singleton的初衷違背。解決這個問題的辦法是同步。

下面看看本文的計數器的例子的實現:

使用方法一:

  1. using System;  
  2. using System.Threading;  
  3. namespace csPattern.Singleton  
  4. {  
  5. public class Counter  
  6. {  
  7. static Counter uniCounter = new Counter(); //存儲***的實例。  
  8. private int totNum = 0; //存儲計數值。  
  9. private Counter()  
  10. {  
  11. Thread.Sleep(100); //這里假設因為某種因素而耽擱了100毫秒。  
  12. //在非lazy initialization 的情況下, 不會影響到計數。.  
  13. }  
  14. static public Counter instance()  
  15. {  
  16. return uniCounter;  
  17. }  
  18. public void Inc() { totNum ++;} //計數加1。  
  19. public int GetCounter() { return totNum;} //獲得當前計數值。  
  20. }  
  21. }  

方法一中由于實例一開始就被創建,所以instance()方法無需再去判斷是否已經存在***的實例,而返回該實例,所以不會出現計數器類多次實例化的問題。

使用方法二:

  1. using System;  
  2. using System.Threading;  
  3. using System.Runtime.CompilerServices;  
  4. namespace csPattern.Singleton  
  5. {  
  6. public class Counter_lazy  
  7. {  
  8. static Counter_lazy uniCounter;  
  9. private int totNum = 0;  
  10. private Counter_lazy()  
  11. {  
  12. Thread.Sleep(100); //假設多線程的時候因某種原因阻塞100毫秒  
  13. }  
  14. [MethodImpl(MethodImplOptions.Synchronized)] //方法的同步屬性  
  15. static public Counter_lazy instance()  
  16. {  
  17. if (null == uniCounter)  
  18. {  
  19. uniCounter = new Counter_lazy();  
  20. }  
  21. return uniCounter;  
  22. }  
  23. public void Inc() { totNum ++;}  
  24. public int GetCounter() { return totNum;}  
  25. }  
  26. }  

不知道大家有沒有注意到instance()方法上方的[MethodImpl(MethodImplOptions.Synchronized)] 語句,他就是同步的要點,他指定了instance()方法同時只能被一個線程使用,這樣就避免了線程0調用instance()創建完成實例前線程1就來C#調用instance()試圖獲得該實例。

【編輯推薦】

  1. C#窗體里調用淺談
  2. C#調用ListEmployee命令
  3. C# CreateEmployeeDefinition()函數
  4. C#實現斷點續傳詳細剖析
  5. C# Employee對象淺談
責任編輯:佚名 來源: 博客園
相關推薦

2009-08-17 16:18:47

C#調用CreateO

2009-08-31 10:39:15

C#調用ListEmp

2009-08-31 16:33:28

C#調用Dispose

2009-08-31 18:05:14

C#調用WalkTre

2009-08-04 09:30:33

C#調用ImageAn

2009-07-31 16:12:10

Windows APIC#

2009-08-07 16:10:20

C#調用API

2009-08-07 16:43:44

C#調用Windows

2009-08-25 10:59:00

C#調用函數顯示值

2009-08-25 15:26:03

C#調用ImOK

2009-08-20 12:29:46

C#調用PInvoke

2009-09-01 11:04:59

C#調用擴展方法

2009-08-05 15:10:19

C#調用GoogleE

2009-09-02 16:36:37

C#調用Excel對象

2009-08-07 17:19:50

C#調用外部進程

2009-08-07 17:22:36

C#調用dll導出函數

2009-08-03 13:13:52

C#調用Outlook

2009-07-31 17:28:35

C#語言調用DLL

2009-08-28 15:58:54

C#窗體里調用

2009-08-21 17:45:40

C#調用COM對象
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 毛片站 | 日韩视频―中文字幕 | 天天综合国产 | 久久综合欧美 | 日韩精品一区二区三区在线 | 欧美日韩久 | 亚洲国产aⅴ成人精品无吗 亚洲精品久久久一区二区三区 | 中文av电影 | 亚洲精品久久久久久下一站 | 福利视频日韩 | 国内自拍视频在线观看 | 成人国产午夜在线观看 | 久久精品日产第一区二区三区 | 99久久精品国产一区二区三区 | 国产精品7777777 | 黄色免费网站在线看 | 成年网站在线观看 | 国产毛片在线看 | 国产一区二区三区色淫影院 | 欧美在线a | 国产一区二区在线观看视频 | 天天干天天插天天 | 精品国产一区二区三区久久久久久 | 欧美日日 | 国产精品成人av | 国产一区二区三区四区五区3d | 欧美日韩视频在线 | 亚洲精品综合一区二区 | 91精品国产一区二区三区蜜臀 | 精品国产青草久久久久96 | 波多野结衣一区二区 | 99热在线观看精品 | 男女免费观看在线爽爽爽视频 | 日本精品一区二区三区在线观看视频 | 高清人人天天夜夜曰狠狠狠狠 | 少妇一级淫片免费播放 | 亚洲免费观看视频网站 | 午夜合集 | 午夜视频一区二区 | 国产在线一区二区 | 一区二区高清在线观看 |