Чтобы иметь таймер реального времени с очень коротким интервалом, вы можете взглянуть на эту статью:
Таймер реального времени в C#
В точке Net следующие таймеры не работают в реальном времени.
System.Windows.Forms.Timer
System.Timers.Timer
System.Threading.Timer
Означает, что вы хотите запускайте свой код каждые 100 миллисекунд, затем таймер срабатывает даже около 110 миллисекунд или позже. Windows не является ОС реального времени из-за этого. Net также не работает в реальном времени.
Чтобы создать таймер реального времени в C#, вы должны написать собственный код, который может удерживать процессор в запустите свой код в нужное время.
class Program
{
static void Main(string[] args)
{
Console.ReadLine();
Console.WriteLine("Running");
RealTimeTimerTest obj = new RealTimeTimerTest();
obj.Run();
}
}
public class RealTimeTimerTest
{
List<DateTime> lst = new List<DateTime>();
System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch();
public void Run()
{
int Tick = 100;
int Sleep = Tick - 20;
long OldElapsedMilliseconds = 0;
sw.Start();
while (sw.IsRunning)
{
long ElapsedMilliseconds = sw.ElapsedMilliseconds;
long mod = (ElapsedMilliseconds % Tick);
if (OldElapsedMilliseconds != ElapsedMilliseconds && (mod == 0 || ElapsedMilliseconds > Tick))
{
//-----------------Do here whatever you want to do--------------Start
lst.Add(DateTime.Now);
//-----------------Do here whatever you want to do--------------End
//-----------------Restart----------------Start
OldElapsedMilliseconds = ElapsedMilliseconds;
OldElapsedMilliseconds = 0;
sw.Reset();
sw.Start();
System.Threading.Thread.Sleep(Sleep);
//-----------------Restart----------------End
}
//------------Must define some condition to break the loop here-----------Start
if (lst.Count > 500)
{
Write();
break;
}
//-------------Must define some condition to break the loop here-----------End
}
}
private void Write()
{
System.IO.StreamWriter sw = new System.IO.StreamWriter("d:\\text.txt", true);
foreach (DateTime dtStart in lst)
sw.WriteLine(dtStart.ToString("HH:mm:ss.ffffff")); sw.Close();
}
}
Также:
Самый точный таймер в. NET?
Таймер высокого разрешения
Таймер высокого разрешения C#
микросекунды и миллисекунды C# Таймер
Точность-Повтор-Действие-Интервал-Асинхронный c -Метод