Saya telah membuat aplikasi kecil yang mengawasi kotak masuk menggunakan dll yang dikelola EWS.
Ketika saya membuat StreamingSubscriptionConnection
saya melewati pemutusan 1 menit.
Kemudian di event handler saat terputus, saya tidur selama 45 detik dan menyambung kembali.
Jika ada sesuatu yang dikirim ke kotak masuk dalam periode tidur 45 detik, awalnya akan tampak seolah-olah terbangun dan mengaktifkan NotificationEventDelegate
dengan benar. Namun setelah beberapa pengujian tampaknya mengaktifkannya beberapa kali untuk email yang sama ketika lebih dari satu email masuk.
Jika saya tidak tidur maka saya tidak mempunyai masalah ini. Jadi pertanyaan saya, kenapa NotificationEventDelegate
tidak berfungsi dengan baik saat disambungkan kembali, dan apakah ada masalah saat langsung menyambung kembali?
kode saya adalah sebagai berikut,
private MailDirectorServer()
{
_isRunning = false;
ExchangeService _service = new ExchangeService()
{
Credentials = new WebCredentials(userName, password),
Url = new Uri(uriAddress)
};
_connection =
new StreamingSubscriptionConnection(_service, 1);
// set up subscriptions here.
_connection.OnNotificationEvent +=
new StreamingSubscriptionConnection.NotificationEventDelegate(OnNewMail);
_connection.OnDisconnect +=
new StreamingSubscriptionConnection.SubscriptionErrorDelegate(OnDisconnect);
_connection.Open();
_isRunning = true;
}
private void OnDisconnect(object sender, SubscriptionErrorEventArgs args)
{
while (true)
{
if (_isRunning)
{
//_logger.Debug("Sleeping for 45 seconds");
//Thread.Sleep(new TimeSpan(0, 0, 45));
_connection.Open();
_logger.Info("Connection Re Opened");
break;
}
else
{
_logger.Info("Closing Down");
break;
}
}
}