private void StartPlayer(string fileName) { //multi-threaded wholesomeness if (pnlPlayer.InvokeRequired) { //multi-threaded goodness pnlPlayer.BeginInvoke((MethodInvoker) delegate { //invoke myself again, but on the UI thread this time StartPlayer(fileName); }); } else { //start playback _mPlayer.Play(fileName); } }