[問題] Timer的用法
請問 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
01/30 23:03, 1F
→
01/30 23:06, , 2F
01/30 23:06, 2F
→
01/30 23:07, , 3F
01/30 23:07, 3F
討論串 (同標題文章)
C_Sharp 近期熱門文章
PTT數位生活區 即時熱門文章