У меня есть обработчики событий для перехвата журналов вызовов на мобильных устройствах Windows. Проблема более специфична для обработчиков событий в C#, а не для мобильных устройств Windows. Я могу подключать и отключать обработчики событий в первый раз. Пробел: Я не могу подключить обработчик событий после его отсоединения хотя бы один раз. Почему обработчики событий не вызываются после его отсоединения и снова прикрепляются?Проблема обработчика событий
Ниже мой код:
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;
}
}
EDIT: Я обновил код, чтобы включить переменный уровень класса. Кроме того, ниже ответы конфликтуют друг с другом. Если я удаляю объект, я должен повторно создать объект, когда мне нужно присоединить обработчик событий. Имеет ли это смысл?
РЕДАКТИРОВАТЬ 2: Проблема связана не с объектами или кодом обработки событий. Я использую LargeIntervalTimer из OpenNETCF. Всякий раз, когда я запускаю таймер с использованием LargeIntervalTimer, обработчик событий не подключен должным образом. Без LargeIntervalTimer все работает нормально.
Я подозреваю, что ваша проблема - это что-то еще. В C# нет ограничений на то, сколько раз вы можете прикреплять и отделять обработчики событий. Возможно, добавьте еще какой-нибудь код и какие точные проблемы у вас есть ... – BFree 2010-11-26 14:21:16