2016-05-08 12 views
0

Ich habe bereits die Konsole 4 Mal mit verschiedenen Frequenzen piepsen und danach Countdown von 5 bis 1. Aber jetzt möchte ich diese beiden Ereignisse gleichzeitig geschehen - Piepton und zur gleichen Zeit zeige eine Nummer an. Ich kann keine Antwort auf Google finden und der Versuch des Laien, beide Befehle in einer Zeile zu schreiben, führt zu nichts Gutes. Gibt es also eine Möglichkeit dies zu tun oder die Konsole unterstützt keine simultanen Ereignisse?simultane Ereignisse in der Konsole C#

Antwort

0

Uh, müssen Sie System.Threading

static void Main() 
{ 
    Thread t = new Thread (beep); 
    t.Start(); 
    Console.WriteLine("Your text"); 
} 

static void beep() 
{ 
    //beep function here 
} 
0

Ja verwenden, können Sie dies tun.

Angenommen, Sie haben zwei Methoden: Beep() und PrintNumber(int number). Dann sollten Sie eine for Schleife haben, um mehrmals einen Ton zu erzeugen.

for(int i = 0; i < 5; ++i) 
{ 
    Beep(); 
    PrintNumber(i); 
} 

Dieser Code wird ein Geräusch und dann eine Nummer drucken. Als nächstes müssen Sie diese Methoden in verschiedenen Threads ausführen. Um einen neuen Thread zu erstellen und Code auszuführen, müssen Sie Tasks verwenden. Um eine Aufgabe zu erstellen, benötigen Sie eine Fabrik verwenden:

Task.Factory.StartNew(action); 

Und passieren dort eine Aktion ausgeführt werden. So ist die komplette Lösung in Ihrem Fall ist

using System; 
using System.Threading.Tasks; 

namespace ConsoleApp 
{ 
    class ConsoleApp 
    { 
     public static void Beep() 
     { 
      // make sound 
     } 

     public static void PrintNumber(int number) 
     { 
      Console.WriteLine(number); 
     } 

     public static void Main(string[] args) 
     { 
      var printTask = Task.Factory.StartNew(
       () => 
       { 
        for (int i = 0; i < 10; ++i) 
         PrintNumber(i); 
       }); 

      var beepTask = Task.Factory.StartNew(
       () => 
       { 
        for (int i = 10; i > 0; --i) 
         Beep(); 
       }); 

      printTask.Wait(); 
      beepTask.Wait(); 
     } 
    } 
} 

Wo () => {} eine Notation ist eine Lambda-Ausdrücke zu schreiben - kleine Stücke von Code ohne Definition eines Verfahrens.

+0

Warum machst du es wird in gleichen Zeiten durchgeführt werden? Ich kann sicher sein, dass es nicht geht. –

+0

@JerrySwitalski so funktioniert es auf meiner Maschine - Thread-Ausführung nach dem Erstellen neuer Aufgabe starten. Ich kann gemischte Ausgaben in der Konsole sehen, wenn ich die Methode "Console.WriteLine to Beep" hinzufüge. Könnten Sie bitte erläutern, warum es nicht gleichzeitig funktioniert? – cassandrad

+0

Ich sehe, Entschuldigung für späte Antwort - so denke ich, dass ich falsch lag, wenn es getestet wird. Prost –