/// <summary> /// Perform an asynchronous dataset walk. /// </summary> /// <param name="walker">Walker implementation.</param> /// <param name="items">Queue of internal items; must be initialized and empty when called from external method.</param> private static async Task DoWalkAsync(IDicomDatasetWalker walker, Queue <DicomItem> items) { try { walker.OnBeginWalk(); while (items.Count > 0) { var item = items.Dequeue(); if (item is DicomElement) { await walker.OnElementAsync(item as DicomElement).ConfigureAwait(false); } else if (item is DicomFragmentSequence) { walker.OnBeginFragment(item as DicomFragmentSequence); } else if (item is DicomFragmentItem) { await walker.OnFragmentItemAsync((item as DicomFragmentItem).Buffer).ConfigureAwait(false); } else if (item is EndDicomFragment) { walker.OnEndFragment(); } else if (item is DicomSequence) { walker.OnBeginSequence(item as DicomSequence); } else if (item is BeginDicomSequenceItem) { walker.OnBeginSequenceItem((item as BeginDicomSequenceItem).Dataset); } else if (item is EndDicomSequenceItem) { walker.OnEndSequenceItem(); } else if (item is EndDicomSequence) { walker.OnEndSequence(); } } walker.OnEndWalk(); } catch (Exception e) { try { walker.OnEndWalk(); throw; } catch { throw e; } } }
public IAsyncResult BeginWalk(IDicomDatasetWalker walker, AsyncCallback callback, object state) { _walker = walker; _exception = null; _async = new EventAsyncResult(callback, state); ThreadPool.QueueUserWorkItem(Walk, null); return _async; }
public static IAsyncResult BeginWalk( this DicomDatasetWalker @this, IDicomDatasetWalker walker, AsyncCallback callback, object state) { return(AsyncFactory.ToBegin(@this.WalkAsync(walker), callback, state)); }
/// <summary> /// Perform an asynchronous "walk" across the DICOM dataset provided in the <see cref="DicomDatasetWalker"/> constructor. /// </summary> /// <param name="walker">Dataset walker implementation to be used for dataset traversal.</param> /// <returns>Awaitable <see cref="Task"/>.</returns> public Task WalkAsync(IDicomDatasetWalker walker) { var items = new Queue <DicomItem>(); BuildWalkQueue(this._dataset, items); return(DoWalkAsync(walker, items)); }
/// <summary> /// Perform a synchronous "walk" across the DICOM dataset provided in the <see cref="DicomDatasetWalker"/> constructor. /// </summary> /// <param name="walker">Dataset walker implementation to be used for dataset traversal.</param> public void Walk(IDicomDatasetWalker walker) { var items = new Queue <DicomItem>(); BuildWalkQueue(this._dataset, items); DoWalk(walker, items); }
public static IAsyncResult BeginWalk( this DicomDatasetWalker @this, IDicomDatasetWalker walker, AsyncCallback callback, object state) { return AsyncFactory.ToBegin(@this.WalkAsync(walker), callback, state); }
public IAsyncResult BeginWalk(IDicomDatasetWalker walker, AsyncCallback callback, object state) { _walker = walker; _exception = null; _async = new EventAsyncResult(callback, state); ThreadPool.QueueUserWorkItem(Walk, null); return(_async); }
/// <summary> /// Perform an asynchronous "walk" across the DICOM dataset provided in the <see cref="DicomDatasetWalker"/> constructor. /// </summary> /// <param name="walker">Dataset walker implementation to be used for dataset traversal.</param> /// <returns>Awaitable <see cref="Task"/>.</returns> public Task WalkAsync(IDicomDatasetWalker walker) { _dataset.OnBeforeSerializing(); var items = new Queue <DicomItem>(); BuildWalkQueue(_dataset, items); return(DoWalkAsync(walker, items)); }
/// <summary> /// Perform a synchronous "walk" across the DICOM dataset provided in the <see cref="DicomDatasetWalker"/> constructor. /// </summary> /// <param name="walker">Dataset walker implementation to be used for dataset traversal.</param> public void Walk(IDicomDatasetWalker walker) { _dataset.OnBeforeSerializing(); var items = new Queue <DicomItem>(); BuildWalkQueue(_dataset, items); DoWalk(walker, items); }
/// <summary> /// Perform an asynchronous dataset walk. /// </summary> /// <param name="walker">Walker implementation.</param> /// <param name="items">Queue of internal items; must be initialized and empty when called from external method.</param> private static async Task DoWalkAsync(IDicomDatasetWalker walker, Queue<DicomItem> items) { try { walker.OnBeginWalk(); while (items.Count > 0) { var item = items.Dequeue(); if (item is DicomElement) { await walker.OnElementAsync(item as DicomElement).ConfigureAwait(false); } else if (item is DicomFragmentSequence) { walker.OnBeginFragment(item as DicomFragmentSequence); } else if (item is DicomFragmentItem) { await walker.OnFragmentItemAsync((item as DicomFragmentItem).Buffer).ConfigureAwait(false); } else if (item is EndDicomFragment) { walker.OnEndFragment(); } else if (item is DicomSequence) { walker.OnBeginSequence(item as DicomSequence); } else if (item is BeginDicomSequenceItem) { walker.OnBeginSequenceItem((item as BeginDicomSequenceItem).Dataset); } else if (item is EndDicomSequenceItem) { walker.OnEndSequenceItem(); } else if (item is EndDicomSequence) { walker.OnEndSequence(); } } walker.OnEndWalk(); } catch (Exception e) { try { walker.OnEndWalk(); throw; } catch { throw e; } } }
/// <summary> /// Perform an asynchronous "walk" across the DICOM dataset provided in the <see cref="DicomDatasetWalker"/> constructor. /// </summary> /// <param name="walker">Dataset walker implementation to be used for dataset traversal.</param> /// <returns>Awaitable <see cref="Task"/>.</returns> public Task WalkAsync(IDicomDatasetWalker walker) { var items = new Queue<DicomItem>(); BuildWalkQueue(this._dataset, items); return DoWalkAsync(walker, items); }
/// <summary> /// Perform a synchronous "walk" across the DICOM dataset provided in the <see cref="DicomDatasetWalker"/> constructor. /// </summary> /// <param name="walker">Dataset walker implementation to be used for dataset traversal.</param> public void Walk(IDicomDatasetWalker walker) { var items = new Queue<DicomItem>(); BuildWalkQueue(this._dataset, items); DoWalk(walker, items); }
public void Walk(IDicomDatasetWalker walker) { EndWalk(BeginWalk(walker, null, null)); }