public bool TryWriteTick(TickIO tickIO) { if (!isInitialized) { throw new InvalidStateException("Please call one of the Initialize() methods first."); } if (isFirstTick) { HandleFirstWrite(); isFirstTick = false; } if (isLegacy) { return(legacy.TryWriteTick(tickIO)); } TryCompleteAsyncWrite(); if (trace) { log.Trace("Writing to file buffer: " + tickIO); } if (!fileBlock.TryWriteTick(tickIO)) { MoveMemoryToQueue(); fileBlock.ReserveHeader(); tickIO.ResetCompression(); if (!fileBlock.TryWriteTick(tickIO)) { throw new InvalidOperationException("After creating new block, writing tick failed."); } TryCompleteAsyncWrite(); if (writeFileResult == null) { writeFileResult = writeFileAction.BeginInvoke(null, null); } } return(true); }