.NET(C#):使用安全執行緒集合快速解決生產者消費者問題

程式示範:進入程式,首先得輸入最大容量,比如輸入10: 接下來生產線產生了,最初當然只有0個項目,我們現在開始生產5個項目,在“生產數量”中輸入5,如: 然後點擊“生產”,5個項目就被生產了: 接下來我們再生產12個項目,加上之前的5個項目,此時一共會生產17個項目,但是總容量是10,所以會有7個生產項目要等待(線程阻塞): 接著再去生產10個項目,此時已經有7個生產項目在等待狀態,後續的生產項目需求會疊加: 現在的情況是:有10個項目已經被生產,還有17個項目等待被生產,下面我們消費5個項目,

.NET(C#):使用Win32Exception類型處理Win32錯誤碼

此類型在System.ComponentModel命名空間內,而不是你可能認為的System.Runtime.InteropServices命名空間內。 但是他的父類:ExternalException,則是在System.Runtime.InteropServices命名空間內。 ExternalException的父類是SystemException(當然現在SystemException和ApplicationException該繼承哪個界限已經很模糊了)。注意ExternalExcept

.NET(C#):使用Expression Tree構建帶有參數、本地變數和傳回值的Lambda

對於參數,需要使用Expression.Parameter建立ParameterExpression對象,注意需要在建立Lambda時傳入ParameterExpression數組才可以使參數有效。對於本地變數,首先Expression類型提供Variable方法,但是這個Variable方法返回的也是ParameterExpression,實際上他們內部建立的都是同一種ParameterExpression對象,唯一的區別是Parameter方法會考慮Type.IsByRef的情況,但是Var

.NET(C#) 配置系統 – ConfigurationElementCollection.ElementName屬性

ConfigurationElementCollection.ElementName屬性在MSDN的解釋是這樣:Gets the name used to identify this collection of elements in the configuration file when overridden in a derived

.NET(C#):不使用指標來修改未經處理資料類型在記憶體中的位元組

更新:一篇更全面的文章:http://www.cnblogs.com/mgen/archive/2011/11/28/2266010.html註:所有樣本均擬在Little Endian環境下運行在C/C++中,操作原始(預定義)資料類型的記憶體位元組分布很簡單,我們可以使用指標來這樣做:/***************************** C/C++ 代碼****************************/int i = 0xAA00FF;//i的記憶體儲存形式:FF 00

.NET(C#):使用System.Text.Decoder類來處理“流文本”

何為“流文本”?

.NET(C#):使用反射來擷取枚舉的名稱、值和特性

首先需要從內部瞭解一下枚舉(Enumeration),相信許多人已經知道了,當我們聲明一個這樣的枚舉類型:enum MyEnum{    AAA, BBB, CCC} 背後的IL是這樣的:.class private auto ansi sealed MyEnum    extends [mscorlib]System.Enum{    .field public static literal valuetype Mgen.MyEnum AAA = int32(0)    .field

.NET 4.5(C#):關於Task的未覺察異常的更新

曾經寫過一篇文章:.NET(C#) TPL:Task中未覺察異常和TaskScheduler.UnobservedTaskException事件 講述在.NET 4.0中,Task的未覺察狀態的異常會在記憶體回收時終結器執行線程中被拋出,像其他未處理異常一樣,這個異常會使整個進程崩潰。而在.NET Framework 4.5 beta後,這個有所改變,這個未覺察的異常不會引發進程崩潰。 所以下面在.NET Framework 4.0中會發生異常的代碼在.NET Framework 4.5

理解C#中介面的永久可重寫性

考慮這樣一個問題,一個類型執行一個介面的方法,這個方法沒有修飾virtual,那麼這個類型的子類還可以修改這個介面的執行方法嗎?答案是永遠可以,並且無論介面是顯示執行還是隱式執行,總是可以改寫的。 來看下面代碼,一個介面,一個父類,一個子類,子類繼續執行父類已經執行的介面方法定義。interface IA{    void doo();} class A : IA{    public void doo()    {        Console.WriteLine("A");    }} //

.NET(C#):多個await和和異常處理

第一點需要提的就是第一個await發生異常後,後續的await不會進行,但是注意此時的Task仍然會進行的,當然後面的Task如果拋出異常的話,異常則屬於未覺察異常,這個未覺察異常在.NET 4.0會在記憶體回收時引發程式崩潰,但在.NET 4.5 beta後不會引發進程崩潰。更多相關資訊可以參(.NET

.NET(C#):負數位域和正數位域

我們常見到的位域標誌定義都是基於正數的,不過其實也可以定義成基於負數的,工作起來則和正數標誌位域一樣。 比如定義一個8位的位域,提供兩個選項分別是最高位和最低位為1。然後分別以byte和sbyte作為枚舉背後資料類型,則枚舉應該這樣聲明:[Flags]enum a : byte{    //128的原碼為:10000000    High = 128,    Low = 1} [Flags]enum b : sbyte{    //-128的補碼為:10000000    High = -128

.NET(C#):XmlReader和Whitespace以及MoveToContent和ReadToFollowing方法

XmlReader預設是讀取XML檔案中的Whitespace和注釋的。 比如這個XML:<root>    <!-- root中 -->    <file>                <file.attr>hidden</file.attr>        a.txt    </file></root> XmlReader讀取代碼://data.xml代表上面的XML檔案using (var xr =

.NET 4.5(C#): 在HttpRequestHeaders中設定Basic驗證

不同於之前的HttpWebRequest類型,在.NET 4.5中新的HttpRequestHeaders類型直接有一個Authorization屬性,對應類型是:AuthenticationHeaderValue,同樣在System.Net.Http.Headers命名空間內。AuthenticationHeaderValue有兩個屬性Parameter和Scheme。為了弄清這兩個參數在對Authorization屬性的作用,我們可以做一個簡單的測試:首先得記得加入.NET

.NET(C#):中各種建立不區分大小寫字典的方法

非泛型類:Hashtable 從.NET Framework 1.0就有的方法1. 直接構建Hashtable類利用的建構函式:public Hashtable(IHashCodeProvider hcp, IComparer comparer); 構建方法:Hashtable hashtable = new Hashtable(CaseInsensitiveHashCodeProvider.Default,

.NET(C#) 配置系統 – 繼承ConfigurationValidatorBase和ConfigurationProperty的預設值

通過繼承ConfigurationValidatorBase類,使用者可以自訂一個配置系統的驗證器,可是今天使用這種方法發現了一個問題:每個ConfigurationProperty在驗證其實際值前,都要對其預設值先進行一次驗證,注意這裡只是驗證一次,發生在驗證第一個ConfigurationProperty的值之前。表現形式就好像靜態建構函式似的。 比如下面的ConfigurationSection和ConfigurationValidatorBase代碼:(代碼類比驗證年齡必須大於等於15歲

.NET(C#):判斷Type類的繼承關係

這些應該算是.NET程式員的基本功吧,可是我今天用的時候卻有點猶豫,最後看筆記才又明白……罪過罪過 就是這三個函數的用法//Type類的函數class Type    bool IsInstanceOfType(object);    //判斷對象是否是指定類型    //類型可以是父類,介面    //用法:父類.IsInstanceOfType(子類對象)     bool IsAssignableFrom(Type)    //判斷兩個類型的關係    //類型可以是父類,介面    //

.NET(C#):中StringBuilder, List, MemoryStream 容量(Capacity屬性)的變化

今天看了一道微軟認證MCTS的樣題,考的是StringBuilder容量(Capacity屬性)的變化,暈……連這種題都有啊,呵呵,不過挺有意思的,為此我研究了一下一些常見的有Capacity屬性的容器,也就是題目上說的那三個,另外還有個ArrayList,不過它和List<T>工作原理一樣,就沒把他放在標題上。    下面是我的電腦測試結果: (32位,WinXP SP2家庭版,.NET Framework 3.5 SP1)

.NET(C#): 監控元素加入的ObservableCollection

簡單的改造一下,可以使ObservableCollection在任何有新成員加入的時候(注意包括已有成員被替換的情況),需要有一個事件進行通知,同時可以設定是否允許該新元素被加入。 原理很簡單,利用INotifyCollectionChanged介面的相關事件,來判斷新元素,然後出發自己的事件通知,最後根據事件EventArgs決定是否刪除這個新元素。 代碼://+ using System.Collections.ObjectModel;//+ using

C#有趣的foreach

目錄1. 不是必須要IEnumerable和IEnumerator2. 支援繼承IDisposable的IEnumerator 返回目錄1.

.NET(C#): 當等號遇到Exception

今天發現軟體中一個很奇怪Bug,究其原因是沒有正確理解“等號和異常”的問題,來看下面這段代碼:static void Main(string[] args){    int[] arr = new int[3];    int i = 0;     try    {        arr[i++] = doo();    }    catch { }     Console.WriteLine(i);} static int doo(){    throw new

總頁數: 4314 1 .... 451 452 453 454 455 .... 4314 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.