Нет простого или очевидного способа сделать этот вид детального контроля времени в среде C # / .NET.Вы можете использовать класс Stopwatch
, чтобы приблизиться, но разрешение не подходит для работы в реальном времени.Чтобы использовать таймер, чтобы сделать что-то вроде этого - бессмысленный код, но вы зацикливаетесь, пока истекшее время не станет вашим желаемым интервалом:
Stopwatch swatch = new Stopwatch();
while(true)
{
swatch.Reset();
swatch.Start();
PortAccess.Output(888, 1);
while (swatch.ElapsedMilliseconds < 1) { }
swatch.Stop();
swatch.Reset();
swatch.Start();
PortAccess.Output(888, 0);
while (swatch.ElapsedMilliseconds < 1) { }
swatch.Stop();
}
Sleep
не должен использоваться нигде для синхронизации.Sleep
только в основном говорит: «спи хотя бы X миллисекунд».Так что Sleep(1)
может находиться в спящем режиме 25 мс.
И кстати: рядом нет компьютеров, у которых больше нет параллельных портов.Это древний - нет, самый древний способ записи битов или переворачивания выводов на внешний компьютер.Делать это, напрямую выводя на порт ввода-вывода ПК, тоже очень глупо.Вы могли бы искать внешнее цифровое устройство ввода / вывода / плату / интерфейс с приличным драйвером - гораздо лучшая идея.