private void DoRefresh(object state)
{
try
{
// check if disposed.
if (m_disposed)
{
return;
}
// send a dummy callback after a cancel.
if (state == null)
{
IComAeEventCallback callback = m_callback;
if (callback != null)
{
callback.OnEvent(
ClientHandle,
true,
true,
null);
}
return;
}
Queue<AeEvent> eventsToSend = null;
lock (m_lock)
{
// check if refresh has been cancelled.
if (!Object.ReferenceEquals(state, m_refreshQueue))
{
return;
}
// clear the queue to indicate operation is complete.
eventsToSend = m_refreshQueue;
m_refreshQueue = null;
}
// send the events to client.
SendInBlocks(m_callback, eventsToSend, MaxSize, true);
}
catch (Exception exception)
{
Utils.Trace(exception, "Error processing refresh callback.");
}
}