国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

C#委派timer和線程以及GC

2019-11-14 16:00:38
字體:
供稿:網(wǎng)友
代碼
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("我去,自己泡妞,還要讓我?guī)щ娪捌保?);
        }
    }
//小明類
    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(委托的方法);委托的方法必須要加上,因為委托的構(gòu)造函數(shù)是不為空的。
注:委托的參數(shù)和返回類型,都要和你要具體委托的方法要一致,例:
  public delegate void BugTicketEventHandler();

  public static void BuyTicket()
  {
   Console.WriteLine("NND,每次都讓我去買票,雞人呀!");
  }

 

委托鏈:

myDelegate += MrZhang.BuyMovieTicket;

結(jié)束!


 

委托的用途和c++的函數(shù)指針相似,但還有提高. 可以把函數(shù)做參數(shù)傳遞在你有好幾個函數(shù),而又事先不知道改運行那個好時,就是典型的應(yīng)用例子. 比如你要實現(xiàn)兩操作數(shù)的加減乘除那就可以定義一個委托 四個函數(shù)具體用什么操作需要用戶決定, 這時就可以再定義一個以委托作為參數(shù)的函數(shù)實現(xiàn)什么運算就把相應(yīng)的函數(shù)傳進去就行了

 

事件監(jiān)聽函數(shù)+=委托(需要執(zhí)行函數(shù))
在System.Timers.Timer中用到

關(guān)于timer 的三種形式
//1.實現(xiàn)按用戶定義的時間間隔引發(fā)事件的計時器。此計時器最宜用于 Windows 窗體應(yīng)用程序中,并且必須在窗口中使用。 
System.Windows.Forms.Timer 

// 2.提供以指定的時間間隔執(zhí)行方法的機制。無法繼承此類。 
System.Threading.Timer 

//3.在應(yīng)用程序中生成定期事件。 
System.Timers.Timer 
下面兩種應(yīng)該是不同線程,無法直接使用form上面的控件
第二種的timer.dispose()結(jié)束有延遲,類似買早餐排隊,當(dāng)在最大早餐(線程達到)時,多次申請早餐(線程)會被記錄,造成執(zhí)行結(jié)束行為時,持續(xù)的資源消耗。
第三種的timer.stop()會取消申請,雖然有幾個延遲,影響不大
所以,第一種不用申請線程,單線程會假死,第二和第三需要申請線程
寫在最后吧。GC,垃圾回收裝置 暫時不接觸DLL,非沖突就用close和dispose吧,析構(gòu)有可能會沖突GC,其實dispose如果不追求可能也沒關(guān)系
需要注意的是在response的clear和end 第一個清理緩沖區(qū),第二個結(jié)束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.survivalescaperooms.com/shensr/archive/2005/11/24/283653.html

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 北碚区| 漳平市| 佛教| 文成县| 榆树市| 乌苏市| 石门县| 洛浦县| 阿拉善右旗| 拉萨市| 蒙阴县| 泰州市| 威海市| 华蓥市| 云安县| 嵩明县| 德兴市| 塘沽区| 石台县| 平和县| 庆阳市| 清新县| 房产| 霍山县| 龙海市| 登封市| 文登市| 固始县| 宜城市| 额尔古纳市| 黄梅县| 天等县| 舒城县| 子长县| 威信县| 承德县| 沙洋县| 宝应县| 阜新市| 桦川县| 淮北市|