Time of Update: 2018-12-05
隱式類型局部變數 C#3.0提供了一個新的關鍵字var,使用該關鍵字,編譯器會根據用於初始化局部變數的初始值推斷出變數的資料類型。 範例程式碼:using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace TestVar{class Program {static void Main(string[] args) {//定義int數組
Time of Update: 2018-12-05
System.Threading.Interlocked類為多個線程共用的變數提供原子操作。為整型類提供原子類操作 經驗顯示,那些需要在多線程情況下被保護的資源通常是整型值,且這些整型值在多線程下最常見的操作就是遞增、遞減或相加操作。Interlocked類提供了一個專門的機制用於完成這些特定的操作。這個類提供了Increment、Decrement、Add靜態方法用於對int或long型變數的遞增、遞減或相加操作。 範例程式碼:using System;using
Time of Update: 2018-12-05
使用Monitor或Mutex進行同步控制的問題:由於獨佔訪問模型不允許任何形式的並發訪問,這樣的效率總是不太高。許多時候,應用程式在訪問資源時是進行讀操作,寫操作相對較少。為解決這一問題,C#提供了System.Threading.ReaderWriterLock類以適應多使用者讀/單使用者寫的情境。該類可實現以下功能:如果資源未被寫伺服器用戶端檔案鎖,那麼任何線程都可對該資源進行讀伺服器用戶端檔案鎖,並且對讀操作鎖數量沒有限制,即多個線程可同時對該資源進行讀伺服器用戶端檔案鎖,以讀取資料
Time of Update: 2018-12-05
同步事件和等待控制代碼用於解決複雜的同步情況。比如一個大的計算步驟包含3個步驟result = first term + second term + third term,如果現在想寫個多線程程式,同時計算first term,second term 和third term,等所有3個步驟計算好後再把它們匯總起來,我們就需要使用到同步事件和等待控制代碼。
Time of Update: 2018-12-05
當一個事件被觸發時,訂閱該事件的方法將在觸發該事件的線程中執行。也就是說,訂閱該事件的方法在觸發事件的線程中同步執行。由此,存在一個問題:如果訂閱事件的方法執行時間很長,觸發事件的線程被阻塞,長時間等待方法執行完畢。這樣,不僅影響後續訂閱事件方法的執行,也影響主線程及時響應使用者的其他請求。如何處理這個問題呢?講到此,我想您已經想到了,那就是非同步事件調用。 怎樣實現非同步事件調用呢?如果您對事件比較瞭解的話,您應該知道事件的本質其實是一種MulticastDelegate(多播委託)。M
Time of Update: 2018-12-05
Timer類:設定一個定時器,定時執行使用者指定的函數。定時器啟動後,系統將自動建立一個新的線程,執行使用者指定的函數。建構函式:Timer(TimerCallback callback, object state, int dueTime, int period)參數說明 callback:一個 System.Threading.TimerCallback 委託,表示要執行的方法。 state:一個包含回調方法要使用的資訊的對象,或者為 null。 dueTime:調用
Time of Update: 2018-12-05
考慮這樣的一個情境:一個停車場的只含一定數量的停車位,只有當停車場中還有空位時,停車場的入口才會開啟。C#提供了Semaphore類來處理這種情境。Semaphore類可以在構造時指定資源數量,使用WaitOne方法等待一個資源,使用Release方法釋放一個資源。範例程式碼:using System;using System.Threading;namespace ProcessTest{class Program {static Semaphore
Time of Update: 2018-12-05
非同步方法呼叫 當一個線程調用方法後,直到方法執行完畢,線程才繼續執行,這種方法被稱為同步方法。然而,有些方法執行時間可能非常長,比如串口操作或訪問網路,這樣線程被阻塞,而無法響應使用者的其他請求。這種情況通常是無法忍受的,所以這時我們應該使用非同步方法呼叫。 非同步方法呼叫的原理是,在方法調用前為非同步方法呼叫指定一個回呼函數,方法調用後被線程池中的一個線程接管,執行該方法。主線程立即返回,繼續執行其他工作或響應使用者請求。如果非同步方法呼叫執行完畢,回呼函數被自動執行,以處理非同步方法呼
Time of Update: 2018-12-05
類型轉換 顯示轉換 隱式轉換 使用者自訂轉換(1) 隱式轉換:一般是低類型向高類型轉化,能夠保證值不發生變化。 隱式數值轉換: 從 sbyte 到 short、int、long、float、double 或 decimal。 從 byte 到 short、ushort、int、uint、long、ulong、float double 或 decimal。 從 short 到 int、long、float、
Time of Update: 2018-12-05
Monitor類功效和lock類似: 1 System.Object obj = (System.Object)x; 2 System.Threading.Monitor.Enter(obj); 3 try 4 { 5 DoSomething(); 6 } 7 finally 8 { 9 System.Threading.Monitor.Exit(obj);10
Time of Update: 2018-12-05
本文轉自:http://blog.csdn.net/Terry001/archive/2008/05/01/2352511.aspxpublic void SetWindowRegion() { System.Drawing.Drawing2D.GraphicsPath FormPath; FormPath = new System.Drawing.Drawing2D.GraphicsPath(); Rectangle
Time of Update: 2018-12-05
首先講解一下c#,這裡只是粗略的講解,詳細內容請購買相關書籍,或參閱相關文檔。c#已經取消了c++中的指標,並且在c++中大量被使用的操作符 (:: ->)已經不在出現,c#中只支援一個"."。c#具有物件導向程式設計語言的所有特性,如封裝、繼承、多態等。而且比java更物件導向,每種類型都可以看作一個對象。但c#只允許單繼承,不允許多重繼承,即一個類不會有多個基類。另外,c#沒有了全域函數,沒有了全域變數,也沒有了全域常量。一切都必須封裝在一個類中。 下面舉一個控制台應用程式的小例子:
Time of Update: 2018-12-05
(一).Web.Config是以XML檔案規格儲存,設定檔分為以下格式 1.配置節處理常式聲明 特點: 位於設定檔的頂部,包含在<configSections>標誌中。 2.特定應用程式配置 特點: 位於<appSetting>中。 可以定義應用程式的全域常量設定等資訊. 3.配置節設定 特點: 位於<system.Web>節中,控制Asp.net運行時的行為.
Time of Update: 2018-12-05
本文轉自:http://www.cnblogs.com/hzbzxm/archive/2008/09/15/1291104.html以前試過在WinForm中自訂滑鼠樣式,結果顯示出來的滑鼠變成單色。 後來百度了下,原來要用API來做。
Time of Update: 2018-12-05
public void BindTreeView(DataTable dt,ref TreeView tvname) { //datatable.DefaultView.Sort("NodeSeq,ParentNode"); tvname.Nodes.Clear(); //建立根節點 DataRow[] parentrow = dt.Select("ParentNode='0'
Time of Update: 2018-12-05
本文轉自:http://hi.baidu.com/yore2003/blog/item/f385df22377156f5d6cae239.html調用API using System.Runtime.InteropServices; [DllImport("user32.dll")] public static extern bool ReleaseCapture(); [DllImport("user32.dll")] public static extern
Time of Update: 2018-12-05
C#排序演算法:冒泡排序 選擇排序 插入排序 希爾排序 一、冒泡排序(Bubble) using System; namespace BubbleSorter { public class BubbleSorter { public void Sort(int[] list) { int i,j,temp; bool done=false; j=1; while((j<list.Length)&&(!done)) { done=true;
Time of Update: 2018-12-05
public void SetComboBox(DataTable dt, ComboBox cbo) { cbo.DataSource = dt; cbo.DisplayMember = dt.Columns[0].ToString(); cbo.ValueMember = dt.Columns[0].ToString(); cbo.Text = ""; }
Time of Update: 2018-12-05
既然可以根據字母獲得對應的ASCII碼值,反過來,可以考慮如何根據給出的ASCII碼值得到其對應的字母呢?開發人員可以使用System.Text.Encoding類中ASCII編碼方式的GetString方法對給出的ASCII碼值進行編碼,以獲得其對應的字母。根據ASCII碼值獲得對應字母的關鍵代碼如下: byte[] array = new byte[1]; array[0] = (byte)(Convert.ToInt32(textBox1.Text.Trim()));
Time of Update: 2018-12-05
public void SetListBox(ListBox TargetBox, DataTable dt, int Col) { TargetBox.Items.Clear(); foreach (DataRow dr in dt.Rows) { TargetBox.Items.Add(dr[Col].ToString()); } }