public override Channel PlayChannel(string url, out TAG_INFO tags) { if (url.ExisFile()) _files.Enqueue(url); else if (url.ExisDirectory()) { foreach ( var file in url.EnumerateAllFiles().Where(file => _supportetExtensions.Contains(file.GetExtension()))) { _files.Enqueue(file); } } else throw new BassException(BASSError.BASS_ERROR_FILEOPEN); #if(DEBUG) _files = RandomStringArrayTool.RandomizeStrings(_files.ToArray()); #endif string first = _files.Dequeue(); _currentChannel = _bassEngine.CreateFile(first, flags: DefaultFileFlags); _currentChannel.SetEntSync(FileEnd); tags = _currentChannel.Tag; return _currentChannel; }
private void FileEnd() { if (_files == null) return; if (_files.Count == 0) { OnEnd(); return; } string first = _files.Dequeue(); _currentChannel = _bassEngine.CreateFile(first, flags: DefaultFileFlags); _currentChannel.SetEntSync(FileEnd); var tags = _currentChannel.Tag; OnChannelSwitched(_currentChannel, tags, true); }