委托调用的问题问一个委托的问题我在一个类里面声明的一个TimerCallback委托变量,然后把他传给一个计时器,
委托调用的问题
问一个委托的问题
我在一个类里面声明的一个TimerCallback委托变量,然后把他传给一个计时器,如下:
C# codepublic class SystemPowerManager { private Timer tmrGetPowerStatus; private SYSTEM_POWER_STATUS_EX2 powStatus; public TimerCallback GetPowerStatusCallback; public SystemPowerManager() { GetPowerStatusCallback = GetSystemPowerStatus; tmrGetPowerStatus = new Timer(GetPowerStatusCallback, powStatus, 0, 2000); } private void GetSystemPowerStatus(object status) { NativeMethods.GetSystemPowerStatusEx2(ref powStatus, (uint)Marshal.SizeOf(powStatus), false); } }
在构造函数里面给委托赋值,然后实例化timer,每隔两秒执行委托.
然后我再一个窗口的Form_Load里面给这个委托添加一个注册方法:
powerManager.GetPowerStatusCallback += headbar.GetBatteryStatusCallback;
GetBatteryStatusCallback是HeadBar类的一个方法.
运行时每次可以调用PowerManager类的GetSystemPowerStatus方法,但是后来注册的方法总是不被执行,这是怎么回事??
[解决办法] public SystemPowerManager()
{
GetPowerStatusCallback = GetSystemPowerStatus; <===== ?????
tmrGetPowerStatus = new Timer(GetPowerStatusCallback, powStatus, 0, 2000);
}
powerManager.GetPowerStatusCallback += headbar.GetBatteryStatusCallback <==== ????;