public void Write(IDimse dimse) { lock (this) { pcid = dimse.PresentationContextId(); String tsUID = fsm.GetAcceptedTransferSyntaxUID(pcid); if (tsUID == null) { throw new SystemException(); } (dimse).TransferSyntaxUniqueId = tsUID; fsm.FireWrite(dimse); if (pDataTF == null) { pDataTF = new PDataTF(fsm.WriteMaxLength); } pDataTF.OpenPDV(pcid, cmd = true); Stream outs = new PDataTFOutputStream(this); IDicomCommand c = dimse.DicomCommand; try { c.Write(outs); } finally { outs.Close(); } if (c.HasDataset()) { pDataTF.OpenPDV(pcid, cmd = false); outs = new PDataTFOutputStream(this); try { dimse.WriteTo(outs, tsUID); } finally { outs.Close(); } } FlushPDataTF(); } }