標籤:
代碼
Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->//小張類
public class MrZhang
{
//其實買車票的悲情人物是小張
public static void BuyTicket()
{
Console.WriteLine("NND,每次都讓我去買票,雞人呀!");
}
public static void BuyMovieTicket()
{
Console.WriteLine("我去,自己泡妞,還要讓我帶電影票!");
}
}
//小明類
class MrMing
{
//聲明一個委託,其實就是個“命令”
public delegate void BugTicketEventHandler();
public static void Main(string[] args)
{
//這裡就是具體闡述這個命令是幹什麼的,本例是MrZhang.BuyTicket“小張買車票”
BugTicketEventHandler myDelegate = new BugTicketEventHandler(MrZhang.BuyTicket);
//這時候委託被附上了具體的方法
myDelegate();
Console.ReadKey();
}
}
BugTicketEventHandler myDelegate = new BugTicketEventHandler(MrZhang.BuyTicket);
這是委託的聲明方法, BugTicketEventHandler(委託的方法);委託的方法必須要加上,因為委託的建構函式是不為空白的。
註:委託的參數和傳回型別,都要和你要具體委託的方法要一致,例:
public delegate void BugTicketEventHandler();
public static void BuyTicket()
{
Console.WriteLine("NND,每次都讓我去買票,雞人呀!");
}
委託鏈:
myDelegate += MrZhang.BuyMovieTicket;
結束!
委託的用途和c++的函數指標相似,但還有提高. 可以把函數做參數傳遞在你有好幾個函數,而又事先不知道改運行那個好時,就是典型的應用例子. 比如你要實現兩運算元的加減乘除那就可以定義一個委託 四個函數具體用什麼操作需要使用者決定, 這時就可以再定義一個以委託作為參數的函數實現什麼運算就把相應的函數傳進去就行了
事件監聽函數+=委託(需要執行函數)
在System.Timers.Timer中用到
關於timer 的三種形式
//1.實現按使用者定義的時間間隔引發事件的計時器。此計時器最宜用於 Windows 表單應用程式中,並且必須在視窗中使用。
System.Windows.Forms.Timer
// 2.提供以指定的時間間隔執行方法的機制。無法繼承此類。
System.Threading.Timer
//3.在應用程式中產生定期事件。
System.Timers.Timer
下面兩種應該是不同線程,無法直接使用form上面的控制項
第二種的timer.dispose()結束有延遲,類似買早餐排隊,當在最大早餐(線程達到)時,多次申請早餐(線程)會被記錄,造成執行結束行為時,持續的資源消耗。
第三種的timer.stop()會取消申請,雖然有幾個延遲,影響不大
所以,第一種不用申請線程,單線程會假死,第二和第三需要申請線程
寫在最後吧。GC,記憶體回收裝置 暫時不接觸DLL,非衝突就用close和dispose吧,析構有可能會衝突GC,其實dispose如果不追求可能也沒關係
需要注意的是在response的clear和end 第一個清理緩衝區,第二個結束js ?直接輸出。
———————————————————————————————————————————————
不同線程之間的通訊
mythread = new Thread(new ThreadStart(BeginListen));
mythread.Start();
private void BeginListen()
{
SetLabelEventHandler setLabelEventHandler = delegate() //匿名委託+Invoke
{
label1.Text = "我改變了它";
};
label1.Invoke(setLabelEventHandler);
}—————————————————————————————————————————————————
delegate和event
http://www.cnblogs.com/shensr/archive/2005/11/24/283653.html
C#委派 timer 和線程以及GC