2011-10-26 5 views
0

알림이 표시되면 캘린더를 다섯 개 병렬로 시청해야합니다. 그것은 잘 작동하지만, 몇 가지 통지 또는 시간이 지나면 언제든지이 예외가 발생합니다. "워터 마크가 유효하지 않습니다." 보고 싶은 사서함 목록이 있습니다 (일정 폴더 만). 트리거는 몇 초마다 시작되며 메서드는 알림이 있는지 여부를 확인합니다. 몇 가지 약속을 만들고 언제든지 "워터 마크가 유효하지 않습니다"예외가 발생했습니다. 내가 이벤트를받는 라인에 나타납니다.PullNotifcation Exchange 웹 서비스 "워터 마크가 유효하지 않습니다"예외

public Notification(ExchangeService _server1, string[] _mailboxName1) 
     { 
      _server = _server1; 
      _listOfList = _listOfList1; 
      _mailboxName = _mailboxName1; 
      foreach (Mailbox m in _mailboxName) 
      { 
       FolderId _Id = new FolderId(WellKnownFolderName.Calendar, m); 
       PullSubscription pullSub = _server.SubscribeToPullNotifications(new FolderId[] { _Id }, 5, null, EventType.Copied, EventType.Created, EventType.Deleted, EventType.Modified, EventType.Moved); 
       _subList.Add(pullSub); 
      } 
      System.Timers.Timer aTimer = new System.Timers.Timer(); 
      aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent); 
      AppSettingsReader config = new AppSettingsReader(); 
      int time = Convert.ToInt16(config.GetValue("TimerInterval", typeof(string))); 
      aTimer.Interval = time; 
      aTimer.Enabled = false; 
      aTimer.Start(); 

     } 
    private static void OnTimedEvent(object source, ElapsedEventArgs e) 
    { 
     Console.WriteLine("Timer"); 
     bool noteWatch = false; 
     foreach (PullSubscription p in _subList) 
     { 
      string type = null; 
      ItemId eventId = null; 
      //Exception the watermark is invalid!! 
      GetEventsResults events = p.GetEvents(); 

      foreach (ItemEvent itemEvent in events.ItemEvents) 
      { 

       switch (itemEvent.EventType) 
       { 
        case EventType.Created: 
         noteWatch = true; 
         eventId = itemEvent.ItemId; 
         type = "Created"; 
         break; 
       } 
      } 
     } 
    } 

답변

2

이유를 찾았습니다 : 내 가입 목록은 안전하지 않습니다. 이 코드를 코드에 추가했는데 제대로 작동합니다.

lock (_subList) 
       { 
        events = p.GetEvents(); 
       } 
관련 문제