Beispiel #1
0
        private void ClearQueue()
        {
            var dic = Hot.GetWavDictionary(DicName);

            foreach (var /*<audioName,queue>*/ kv in dic)
            {
                var queue = kv.Value;
                lock (queue)
                {
                    queue.Clear();
                }
            }
        }
Beispiel #2
0
        private void SaveWave()
        {
            var dic = Hot.GetWavDictionary(DicName);

            foreach (var /*<audioName,queue>*/ kv in dic)
            {
                var items = new List <(byte[] Buffer, int Length, DateTime TimeGenerated)>();
                var queue = kv.Value;
                lock (queue)
                {
                    while (queue.Count > 0)
                    {
                        items.Add(queue.Dequeue());
                    }
                }
                if (items.Count > 0)
                {
                    var i0 = items[0];
                    if (Writers.TryGetValue(kv.Key, out var writer) == false)
                    {
                        writer = Writers.GetValueOrDefault(kv.Key, true, audioName => makeWriter(audioName, i0.TimeGenerated));
                        if (writer != null)
                        {
                            isPrePlaying = true;
                        }
                        else
                        {
                            Writers.Remove(kv.Key);
                        }
                    }
                    foreach (var item in items)
                    {
                        writer?.Write(item.Buffer, 0, item.Length);
                    }
                }
            }
        }