2017-02-19 5 views
0

Ich habe mich gefragt, wie man eine Schleife in VisualStudio macht. Ich bin in der Lage eine while-Schleife mit diesem Code zu machen:Wie erstelle ich in VisualStudio eine Schleife mit einer festgelegten Zeit zwischen den einzelnen Aktivierungen?

int i = 0; 
while (i<1) 
{ 
    //event 
} 

Allerdings wollte ich eine Pause zwischen dem einzelnen Schleife hinzuzufügen, so dass, wenn // Ereignis abgeschlossen ist, unterbricht es für 3 Sekunden vor der Wiederholung, jede mögliche Hilfe würde geschätzt werden. Vielen Dank!

+1

Visual Studio ist eine IDE, keine Programmiersprache. – tkausl

+0

Wenn es kein Ui-Thread ist, verwenden Sie Thread.Sleep (3000); ... unter der Annahme, C# – Axis

+2

Verwenden Sie einen Timer anstelle einer Schleife. –

Antwort

1

Das folgende ist ein Konsolenprogramm. Es zeigt eine von vielen Möglichkeiten. Wenn dies Ihren Anforderungen nicht entspricht, müssen die Anforderungen möglicherweise geklärt werden. Da es sich um ein Konsolenprogramm handelt, benutze ich ein AutoResetEvent, um das Programm warten zu lassen, bis WorkDone den Wert 3 hat. Ihr TimerCallback kann alles tun, was getan werden muss und wird alle 3 Sekunden ausgeführt.

using System; 
using System.Threading; 

namespace SO42323314 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      WorkToDo ToDo = new WorkToDo(); 
      Timer ticker = new Timer(TimerCallback, ToDo, 0, 3000); 
      ToDo.are.WaitOne(); 
     } 

     /// <summary> 
     /// This will be called every time the interval occurs 
     /// </summary> 
     /// <param name="ToDoObject"></param> 
     static void TimerCallback(object ToDoObject) 
     { 
      WorkToDo ToDo = ToDoObject as WorkToDo; 
      Console.WriteLine(ToDo.WorkDone); 
      ++ToDo.WorkDone; 
      if (ToDo.WorkDone > 3) 
       ToDo.are.Set(); // signal the AutoResetEvent 
     } 
    } 

    class WorkToDo 
    { 
     public int WorkDone = 0; 
     // initialize the AutoResetEvent to not signaled 
     public AutoResetEvent are = new AutoResetEvent(false); 
    } 
} 
Verwandte Themen