public int[] DeleteItems(int[] serverHandles)
{
TraceState("DeleteItems", serverHandles.Length);
ThrowIfDisposed();
lock (m_lock)
{
// validate the handles.
int[] results = new int[serverHandles.Length];
ComDaGroupItem[] items = new ComDaGroupItem[serverHandles.Length];
for (int ii = 0; ii < serverHandles.Length; ii++)
{
ComDaGroupItem item = null;
if (!m_itemsByHandle.TryGetValue(serverHandles[ii], out item))
{
results[ii] = ResultIds.E_INVALIDHANDLE;
continue;
}
items[ii] = item;
RemoveItemFromSubscription(item);
m_itemsByHandle.Remove(serverHandles[ii]);
m_items.Remove(item);
}
// update the subscription.
try
{
m_subscription.ApplyChanges();
}
catch (Exception e)
{
SetFatalError(items, results, e, ResultIds.E_FAIL);
}
// start the update timer.
CheckUpdateTimerStatus();
// return any errors.
return results;
}
}