У меня есть обработчики событий для перехвата журналов вызовов на Windows Mobile.Проблема более специфична для обработчиков событий в C #, а не для Windows Mobile.Я могу подключать и отключать обработчики событий в первый раз.Проблема: Я не могу подключить обработчик событий после его отсоединения хотя бы один раз. Почему обработчики событий не вызываются после его отсоединения и повторного подключения?
Ниже приведен мой код:
private static SystemState stateIncoming = null;
private static SystemState stateOutgoing = null;
private static SystemState stateTalking = null;
public static void StartCallLogInterception()
{
if (stateIncoming == null && stateOutgoing == null && stateTalking == null)
{
stateIncoming = new SystemState(SystemProperty.PhoneIncomingCall);
stateIncoming.Changed += new ChangeEventHandler(stateIncoming_Changed);
stateOutgoing = new SystemState(SystemProperty.PhoneCallCalling);
stateOutgoing.Changed += new ChangeEventHandler(stateOutgoing_Changed);
stateTalking = new SystemState(SystemProperty.PhoneCallTalking);
stateTalking.Changed += new ChangeEventHandler(stateTalking_Changed);
}
}
public static void EndCallLogInterception()
{
if (stateIncoming != null && stateOutgoing != null && stateTalking != null)
{
stateIncoming.Changed -= new ChangeEventHandler(stateIncoming_Changed);
stateIncoming = null;
stateOutgoing.Changed -= new ChangeEventHandler(stateOutgoing_Changed);
stateOutgoing = null;
stateTalking.Changed -= new ChangeEventHandler(stateTalking_Changed);
stateTalking = null;
}
}
РЕДАКТИРОВАТЬ: я обновил код, чтобы включить переменную уровня класса.Также ниже ответы противоречат друг другу.Если я избавляюсь от объекта, я должен заново создать объект, когда мне нужно присоединить обработчик событий.Имеет ли это смысл?
РЕДАКТИРОВАТЬ 2: Проблема не в объектах или коде обработки событий.Я использую LargeIntervalTimer из OpenNETCF.Всякий раз, когда я запускаю таймер, используя LargeIntervalTimer, обработчик событий не присоединен должным образом.Без LargeIntervalTimer все работает нормально.