Turn on / off the sound of the Console.Beep button

I have a button with text that says Music On / Off.

With the following code Console.Beep() :

 private void button1_Click(object sender, EventArgs e) { Console.Beep(659, 125); Console.Beep(659, 125); Thread.Sleep(125); Console.Beep(659, 125); Thread.Sleep(167); Console.Beep(523, 125); Console.Beep(659, 125); Thread.Sleep(125); Console.Beep(784, 125); Thread.Sleep(375); Console.Beep(392, 125); Thread.Sleep(375); Console.Beep(523, 125); Thread.Sleep(250); Console.Beep(392, 125); Thread.Sleep(250); Console.Beep(330, 125); Thread.Sleep(250); Console.Beep(440, 125); Thread.Sleep(125); Console.Beep(494, 125); Thread.Sleep(125); Console.Beep(466, 125); Thread.Sleep(42); Console.Beep(440, 125); Thread.Sleep(125); Console.Beep(392, 125); Thread.Sleep(125); Console.Beep(659, 125); Thread.Sleep(125); Console.Beep(784, 125); Thread.Sleep(125); Console.Beep(880, 125); Thread.Sleep(125); Console.Beep(698, 125); Console.Beep(784, 125); Thread.Sleep(125); Console.Beep(659, 125); Thread.Sleep(125); Console.Beep(523, 125); Thread.Sleep(125); Console.Beep(587, 125); Console.Beep(494, 125); Thread.Sleep(125); Console.Beep(523, 125); Thread.Sleep(250); Console.Beep(392, 125); Thread.Sleep(250); Console.Beep(330, 125); Thread.Sleep(250); Console.Beep(440, 125); Thread.Sleep(125); Console.Beep(494, 125); Thread.Sleep(125); Console.Beep(466, 125); Thread.Sleep(42); Console.Beep(440, 125); Thread.Sleep(125); Console.Beep(392, 125); Thread.Sleep(125); Console.Beep(659, 125); Thread.Sleep(125); Console.Beep(784, 125); Thread.Sleep(125); Console.Beep(880, 125); Thread.Sleep(125); Console.Beep(698, 125); Console.Beep(784, 125); Thread.Sleep(125); Console.Beep(659, 125); Thread.Sleep(125); Console.Beep(523, 125); Thread.Sleep(125); Console.Beep(587, 125); Console.Beep(494, 125); Thread.Sleep(375); Console.Beep(784, 125); Console.Beep(740, 125); Console.Beep(698, 125); Thread.Sleep(42); Console.Beep(622, 125); Thread.Sleep(125); Console.Beep(659, 125); Thread.Sleep(167); Console.Beep(415, 125); Console.Beep(440, 125); Console.Beep(523, 125); Thread.Sleep(125); Console.Beep(440, 125); Console.Beep(523, 125); Console.Beep(587, 125); Thread.Sleep(250); Console.Beep(784, 125); Console.Beep(740, 125); Console.Beep(698, 125); Thread.Sleep(42); Console.Beep(622, 125); Thread.Sleep(125); Console.Beep(659, 125); Thread.Sleep(167); Console.Beep(698, 125); Thread.Sleep(125); Console.Beep(698, 125); Console.Beep(698, 125); Thread.Sleep(625); Console.Beep(784, 125); Console.Beep(740, 125); Console.Beep(698, 125); Thread.Sleep(42); Console.Beep(622, 125); Thread.Sleep(125); Console.Beep(659, 125); Thread.Sleep(167); Console.Beep(415, 125); Console.Beep(440, 125); Console.Beep(523, 125); Thread.Sleep(125); Console.Beep(440, 125); Console.Beep(523, 125); Console.Beep(587, 125); Thread.Sleep(250); Console.Beep(622, 125); Thread.Sleep(250); Console.Beep(587, 125); Thread.Sleep(250); Console.Beep(523, 125); Thread.Sleep(1125); Console.Beep(784, 125); Console.Beep(740, 125); Console.Beep(698, 125); Thread.Sleep(42); Console.Beep(622, 125); Thread.Sleep(125); Console.Beep(659, 125); Thread.Sleep(167); Console.Beep(415, 125); Console.Beep(440, 125); Console.Beep(523, 125); Thread.Sleep(125); Console.Beep(440, 125); Console.Beep(523, 125); Console.Beep(587, 125); Thread.Sleep(250); Console.Beep(784, 125); Console.Beep(740, 125); Console.Beep(698, 125); Thread.Sleep(42); Console.Beep(622, 125); Thread.Sleep(125); Console.Beep(659, 125); Thread.Sleep(167); Console.Beep(698, 125); Thread.Sleep(125); Console.Beep(698, 125); Console.Beep(698, 125); Thread.Sleep(625); Console.Beep(784, 125); Console.Beep(740, 125); Console.Beep(698, 125); Thread.Sleep(42); Console.Beep(622, 125); Thread.Sleep(125); Console.Beep(659, 125); Thread.Sleep(167); Console.Beep(415, 125); Console.Beep(440, 125); Console.Beep(523, 125); Thread.Sleep(125); Console.Beep(440, 125); Console.Beep(523, 125); Console.Beep(587, 125); Thread.Sleep(250); Console.Beep(622, 125); Thread.Sleep(250); Console.Beep(587, 125); Thread.Sleep(250); Console.Beep(523, 125); Thread.Sleep(625); } 

My question is: how can I tell the button to turn off the music if it is clicked again, and then turn on the music again if it is clicked again, etc. etc.

+4
source share
3 answers

I’m not used to writing the full code to answer the question, but considering how bored I am right now, and given that the game was played, I could not fight the desire to make a small state machine.

 public class Player { private Thread Thread { get; set; } private ManualResetEventSlim Mutex { get; set; } public Player() { this.Mutex = new ManualResetEventSlim(false); this.Thread = new Thread(this.PlayThread); this.Thread.Start(); } public void Play() { this.Mutex.Set(); } public void Stop() { this.Mutex.Reset(); } private static IEnumerable<Action> PlaySong() { yield return () => Console.Beep(659, 125); yield return () => Console.Beep(659, 125); yield return () => Thread.Sleep(125); yield return () => Console.Beep(659, 125); yield return () => Thread.Sleep(167); yield return () => Console.Beep(523, 125); yield return () => Console.Beep(659, 125); yield return () => Thread.Sleep(125); yield return () => Console.Beep(784, 125); yield return () => Thread.Sleep(375); yield return () => Console.Beep(392, 125); yield return () => Thread.Sleep(375); yield return () => Console.Beep(523, 125); yield return () => Thread.Sleep(250); yield return () => Console.Beep(392, 125); yield return () => Thread.Sleep(250); yield return () => Console.Beep(330, 125); yield return () => Thread.Sleep(250); yield return () => Console.Beep(440, 125); yield return () => Thread.Sleep(125); yield return () => Console.Beep(494, 125); yield return () => Thread.Sleep(125); yield return () => Console.Beep(466, 125); yield return () => Thread.Sleep(42); yield return () => Console.Beep(440, 125); yield return () => Thread.Sleep(125); yield return () => Console.Beep(392, 125); yield return () => Thread.Sleep(125); yield return () => Console.Beep(659, 125); yield return () => Thread.Sleep(125); yield return () => Console.Beep(784, 125); yield return () => Thread.Sleep(125); yield return () => Console.Beep(880, 125); yield return () => Thread.Sleep(125); yield return () => Console.Beep(698, 125); yield return () => Console.Beep(784, 125); yield return () => Thread.Sleep(125); yield return () => Console.Beep(659, 125); yield return () => Thread.Sleep(125); yield return () => Console.Beep(523, 125); yield return () => Thread.Sleep(125); yield return () => Console.Beep(587, 125); yield return () => Console.Beep(494, 125); yield return () => Thread.Sleep(125); yield return () => Console.Beep(523, 125); yield return () => Thread.Sleep(250); yield return () => Console.Beep(392, 125); yield return () => Thread.Sleep(250); yield return () => Console.Beep(330, 125); yield return () => Thread.Sleep(250); yield return () => Console.Beep(440, 125); yield return () => Thread.Sleep(125); yield return () => Console.Beep(494, 125); yield return () => Thread.Sleep(125); yield return () => Console.Beep(466, 125); yield return () => Thread.Sleep(42); yield return () => Console.Beep(440, 125); yield return () => Thread.Sleep(125); yield return () => Console.Beep(392, 125); yield return () => Thread.Sleep(125); yield return () => Console.Beep(659, 125); yield return () => Thread.Sleep(125); yield return () => Console.Beep(784, 125); yield return () => Thread.Sleep(125); yield return () => Console.Beep(880, 125); yield return () => Thread.Sleep(125); yield return () => Console.Beep(698, 125); yield return () => Console.Beep(784, 125); yield return () => Thread.Sleep(125); yield return () => Console.Beep(659, 125); yield return () => Thread.Sleep(125); yield return () => Console.Beep(523, 125); yield return () => Thread.Sleep(125); yield return () => Console.Beep(587, 125); yield return () => Console.Beep(494, 125); yield return () => Thread.Sleep(375); yield return () => Console.Beep(784, 125); yield return () => Console.Beep(740, 125); yield return () => Console.Beep(698, 125); yield return () => Thread.Sleep(42); yield return () => Console.Beep(622, 125); yield return () => Thread.Sleep(125); yield return () => Console.Beep(659, 125); yield return () => Thread.Sleep(167); yield return () => Console.Beep(415, 125); yield return () => Console.Beep(440, 125); yield return () => Console.Beep(523, 125); yield return () => Thread.Sleep(125); yield return () => Console.Beep(440, 125); yield return () => Console.Beep(523, 125); yield return () => Console.Beep(587, 125); yield return () => Thread.Sleep(250); yield return () => Console.Beep(784, 125); yield return () => Console.Beep(740, 125); yield return () => Console.Beep(698, 125); yield return () => Thread.Sleep(42); yield return () => Console.Beep(622, 125); yield return () => Thread.Sleep(125); yield return () => Console.Beep(659, 125); yield return () => Thread.Sleep(167); yield return () => Console.Beep(698, 125); yield return () => Thread.Sleep(125); yield return () => Console.Beep(698, 125); yield return () => Console.Beep(698, 125); yield return () => Thread.Sleep(625); yield return () => Console.Beep(784, 125); yield return () => Console.Beep(740, 125); yield return () => Console.Beep(698, 125); yield return () => Thread.Sleep(42); yield return () => Console.Beep(622, 125); yield return () => Thread.Sleep(125); yield return () => Console.Beep(659, 125); yield return () => Thread.Sleep(167); yield return () => Console.Beep(415, 125); yield return () => Console.Beep(440, 125); yield return () => Console.Beep(523, 125); yield return () => Thread.Sleep(125); yield return () => Console.Beep(440, 125); yield return () => Console.Beep(523, 125); yield return () => Console.Beep(587, 125); yield return () => Thread.Sleep(250); yield return () => Console.Beep(622, 125); yield return () => Thread.Sleep(250); yield return () => Console.Beep(587, 125); yield return () => Thread.Sleep(250); yield return () => Console.Beep(523, 125); yield return () => Thread.Sleep(1125); yield return () => Console.Beep(784, 125); yield return () => Console.Beep(740, 125); yield return () => Console.Beep(698, 125); yield return () => Thread.Sleep(42); yield return () => Console.Beep(622, 125); yield return () => Thread.Sleep(125); yield return () => Console.Beep(659, 125); yield return () => Thread.Sleep(167); yield return () => Console.Beep(415, 125); yield return () => Console.Beep(440, 125); yield return () => Console.Beep(523, 125); yield return () => Thread.Sleep(125); yield return () => Console.Beep(440, 125); yield return () => Console.Beep(523, 125); yield return () => Console.Beep(587, 125); yield return () => Thread.Sleep(250); yield return () => Console.Beep(784, 125); yield return () => Console.Beep(740, 125); yield return () => Console.Beep(698, 125); yield return () => Thread.Sleep(42); yield return () => Console.Beep(622, 125); yield return () => Thread.Sleep(125); yield return () => Console.Beep(659, 125); yield return () => Thread.Sleep(167); yield return () => Console.Beep(698, 125); yield return () => Thread.Sleep(125); yield return () => Console.Beep(698, 125); yield return () => Console.Beep(698, 125); yield return () => Thread.Sleep(625); yield return () => Console.Beep(784, 125); yield return () => Console.Beep(740, 125); yield return () => Console.Beep(698, 125); yield return () => Thread.Sleep(42); yield return () => Console.Beep(622, 125); yield return () => Thread.Sleep(125); yield return () => Console.Beep(659, 125); yield return () => Thread.Sleep(167); yield return () => Console.Beep(415, 125); yield return () => Console.Beep(440, 125); yield return () => Console.Beep(523, 125); yield return () => Thread.Sleep(125); yield return () => Console.Beep(440, 125); yield return () => Console.Beep(523, 125); yield return () => Console.Beep(587, 125); yield return () => Thread.Sleep(250); yield return () => Console.Beep(622, 125); yield return () => Thread.Sleep(250); yield return () => Console.Beep(587, 125); yield return () => Thread.Sleep(250); yield return () => Console.Beep(523, 125); yield return () => Thread.Sleep(625); } private void PlayThread() { foreach (var action in PlaySong()) { if (!this.Mutex.IsSet) { this.Mutex.Wait(); } action(); } } } 

Usage: create an instance of the Player class. Use the play method to play and stop the Stop method. Ideally, you would need to cancel the mutex after the song ends.

+6
source

What @Steve B has in the comment is the correct method. You may want to watch the Timer Class , as it is quite easy to work with, and you can achieve what it offers / you are looking for.

0
source

See this topic: How to run a simple bit of code in a new thread?

You need to run the music as a separate stream for the user interface itself.

0
source

All Articles