1 // -----------------------------------------------------------------------
2 // <copyright file="JobQueue.cs" company="Microsoft">
3 // TODO: Update copyright text.
5 // -----------------------------------------------------------------------
7 using System.Collections.Concurrent;
8 using System.Threading;
9 using System.Threading.Tasks;
14 using System.Collections.Generic;
19 /// TODO: Update summary.
23 private readonly BlockingCollection<Action> _statusUpdateQueue = new BlockingCollection<Action>();
24 private CancellationToken _cancellationToken;
27 public void Start(CancellationToken token)
29 _cancellationToken = token;
30 Task.Factory.StartNew(ProcessUpdates, _cancellationToken);
33 private void ProcessUpdates()
35 foreach (var action in _statusUpdateQueue.GetConsumingEnumerable())
41 public void Add(Action action)
43 _statusUpdateQueue.Add(action);
48 _statusUpdateQueue.CompleteAdding();