void RemoveTablet(uint index) { System.Diagnostics.Debug.Assert(index < Count && Count > 0); TabletDevice removeTablet = _tablets[index]; TabletDevice[] tablets = new TabletDevice[_tablets.Length - 1]; uint preCopyCount = index; uint postCopyCount = (uint)_tablets.Length - index - 1; Array.Copy(_tablets, 0, tablets, 0, preCopyCount); Array.Copy(_tablets, index + 1, tablets, index, postCopyCount); _tablets = tablets; // DevDiv:1078091 // Dispose the tablet unless there is input waiting removeTablet.DisposeOrDeferDisposal(); // This is now a deferred disposal, move it to the deferred list if (removeTablet.IsDisposalPending) { _deferredTablets.Add(removeTablet); } }
internal void DisposeTablets() { if (_tablets != null) { for (int iTablet = 0, cTablets = _tablets.Length; iTablet < cTablets; iTablet++) { if (_tablets[iTablet] != null) { TabletDevice removedTablet = _tablets[iTablet]; // DevDiv:1078091 // Dispose the tablet unless there is input waiting removedTablet.DisposeOrDeferDisposal(); // This is now a deferred disposal, move it to the deferred list if (removedTablet.IsDisposalPending) { _deferredTablets.Add(removedTablet); } } } _tablets = null; } }