作者Epimenides (No.6)
看板C_Sharp
标题[问题] Timer的用法
时间Tue Jan 30 19:17:44 2007
请问 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
1F:→ Turbine:Overloading DogDoor的Close方法 01/30 23:03
2F:→ Turbine:public void Close(Object obj){this.Close();} 01/30 23:06
3F:→ Turbine:不过这样写怪怪的 哈 01/30 23:07