[問題] Timer的用法

看板C_Sharp (C#)作者 (No.6)時間18年前 (2007/01/30 19:17), 編輯推噓0(003)
留言3則, 1人參與, 最新討論串3/4 (看更多)
請問 C# 的 Timer 是不是只能用一個TimerCallBack的物件 來指示時間到時要執行的方法? 我現在是在看 Head First Object Oriented Analysis & Design 這本 它是用java寫的 我邊看邊改寫成C# 範例裡面它是有一個DogDoor物件 可以用Remote來控制它 現在就是要讓Remote打開dogdoor後 五秒鐘後自動關閉 我選了 Timer 這物件 它又必須要以 TimerCallBack指定 delegate 討厭的是 TimerCallBack的 constructor 裡指到的method 參數必須要是 Object 但寫好的那個 DogDoor 裡的 Close 則沒有參數 直接call的話 compiler會抱怨說: 'method' 沒有任何多載符合 'delegate' 委派 以下是我的改寫 namespace Ch2 { class Remote { private DogDoor door; public Remote(DogDoor door) { this.door = door; } public void PressButton() { Console.WriteLine("Pressing the remote control button..."); if(door.isOpen()) { door.Close(); } else { door.Open(); //以下這行compiler不會過 TimerCallback callback = new TimerCallback(door.Close); Timer timer = new Timer (callback, null, 5000, Timeout.Infinite); } } } } 我想一定有辦法讓它可以呼叫人家寫好的method 又不必要照它的signature吧... 請教有經驗的各位 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.229.70.226

01/30 23:03, , 1F
Overloading DogDoor的Close方法
01/30 23:03, 1F

01/30 23:06, , 2F
public void Close(Object obj){this.Close();}
01/30 23:06, 2F

01/30 23:07, , 3F
不過這樣寫怪怪的 哈
01/30 23:07, 3F
文章代碼(AID): #15lobPAi (C_Sharp)
討論串 (同標題文章)
文章代碼(AID): #15lobPAi (C_Sharp)