public async void Play(int buffer) { _backend.SourceSetBuffer(_source, buffer); Volume = _volume; Pitch = _pitch; Panning = _panning; _backend.SourceSetLooping(_source, IsLooping); _backend.SourcePlay(_source); _errors.HasErrors(); if (IsLooping) { return; } // Query the source to find out when it stops playing. do { await Task.Delay(100); }while (_backend.SourceIsPlaying(_source)); _tcs.TrySetResult(null); }