Figured out what was going on. When I clicked the Play button on one class (we'll call it main.cs) it began playing the audio via WaveOut in one audio stream. Then when I click the stop button in main.cs it was attempting to stop a new audio stream. So the functions related to audio such as stop had seemingly no affect because they were always trying to stop an audio stream that didn't have anything yet playing.
What I did to work around this problem was to add a few more lines of code to the main.cs so that the WaveOut was defined there, then each of the Play and Stop button clicks would then reference the class with the rest of the code.