private void ReadAbortTestCore(int itemCount)
        {
            string segmentFileName = null;

            try
            {
                Random rnd = new Random();
                using (var segment = Create(10000, 1000, 16))
                {
                    segmentFileName = segment.FileName;
                    for (int i = 0; i < itemCount; i++)
                    {
                        Assert.IsTrue(segment.TryAdd(i));
                    }
                }


                while (true)
                {
                    using (var segment = PersistentDiskQueueSegment <int> .Open(100, segmentFileName, new ItemSerializer(), true))
                    {
                        if (segment.IsCompleted)
                        {
                            break;
                        }
                        RunReadAbort(segment, Math.Max(1, itemCount / 10), rnd);
                    }
                }
            }
            finally
            {
                if (segmentFileName != null && File.Exists(segmentFileName))
                {
                    try
                    {
                        File.Delete(segmentFileName);
                    }
                    catch { }
                }
            }
        }
        private void WriteAbortTestCore(int itemCount)
        {
            string segmentFileName = null;

            try
            {
                Random rnd = new Random();
                using (var segment = Create(10000, 1000, 16))
                {
                    segmentFileName = segment.FileName;
                    RunWriteAbort(segment, itemCount, rnd);
                }

                int readCnt = 0;

                using (var segment = PersistentDiskQueueSegment <int> .Open(100, segmentFileName, new ItemSerializer(), true))
                {
                    Assert.IsTrue(segment.Count >= itemCount, "Item missed");

                    int item = 0;
                    while (segment.TryTake(out item))
                    {
                        readCnt++;
                    }
                }

                Assert.IsTrue(readCnt >= itemCount, "Item missed");
            }
            finally
            {
                if (segmentFileName != null && File.Exists(segmentFileName))
                {
                    try
                    {
                        File.Delete(segmentFileName);
                    }
                    catch { }
                }
            }
        }