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);
}
}
Visual Studio ist eine IDE, keine Programmiersprache. – tkausl
Wenn es kein Ui-Thread ist, verwenden Sie Thread.Sleep (3000); ... unter der Annahme, C# – Axis
Verwenden Sie einen Timer anstelle einer Schleife. –