public virtual void Delete(GrpcConnection connection, GrpcSbFrame grpcSbFrame) { var client = new RemoteFrameRpcService.RemoteFrameRpcServiceClient( connection.CallInvoker); connection .GetOrCreateBulkDeleter <GrpcSbFrame>() .QueueForDeletion(grpcSbFrame, (List <GrpcSbFrame> frames) => { var request = new BulkDeleteRequest(); request.Frames.AddRange(frames); connection.InvokeRpc(() => { client.BulkDelete(request); }); }); }
// Disposing indicates whether this method has been called by user's code or by the // the destructor. In the latter case, we should not reference managed objects as we cannot // know if they have already been reclaimed by the garbage collector. protected virtual void Dispose(bool disposing) { if (!disposed) { // We only have unmanaged resources to dispose of in this class. connection .GetOrCreateBulkDeleter <GrpcSbFrame>() .QueueForDeletion(grpcSbFrame, (List <GrpcSbFrame> frames) => { var request = new BulkDeleteRequest(); request.Frames.AddRange(frames); connection.InvokeRpc(() => { client.BulkDelete(request); }); }); gcHandle.Free(); disposed = true; } }