private async Task QueueTags(List <Tag> ts, int fragment) { CallAkamaiDecryptionService(ts); queueLock.Wait(); try { if (fragment == bootstrap.CurrentFragmentWrite) { await ProcessTags(ts); bootstrap.IncreaseFragmentWrite(); while (FragmentQueue.ContainsKey(bootstrap.CurrentFragmentWrite)) { await ProcessTags(FragmentQueue[bootstrap.CurrentFragmentWrite]); FragmentQueue.Remove(bootstrap.CurrentFragmentWrite); bootstrap.IncreaseFragmentWrite(); } } else { FragmentQueue.Add(fragment, ts); } } catch (Exception e) { int b = 1; } finally { queueLock.Release(); } }