/
kochkatech
/
Queue
Обзор
Документация
Войти
/
kochkatech
/
Queue
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
dev
src/Queue.Admin/Services/DisplayProcessHandle.cs
34 строки
2 KB
kochkareal
feat: вкладка "Экраны" в Admin — запуск/управление табло и АРМ оператора
27 июл 2026, 21:26
27 июл 2026, 21:26
62e41f9
Код
Авторство
О чём код?
using System; using System.Diagnostics; using System.IO; using System.IO.Pipes; using System.Threading.Tasks; namespace Queue.Admin.Services; // Оборачивает процесс Queue.Display, запущенный с --windowed, и именованный канал для // переключения его в режим киоска/обратно — см. Queue.Display/Services/KioskControlPipeServer.cs // (симметричная часть на стороне Display). Имя канала выводится из PID процесса, который Admin // сам породил, поэтому дополнительного согласования адреса не требуется. public class DisplayProcessHandle { private readonly Process _process; public DisplayProcessHandle(Process process) { _process = process; } public async Task ToggleKioskAsync(bool kiosk) { var pipeName = $"queue-display-{_process.Id}"; using var client = new NamedPipeClientStream(".", pipeName, PipeDirection.Out); // Табло могло не успеть открыть канал сразу после запуска процесса — короткий таймаут // достаточен (канал открывается практически сразу же в BoardWindow.OnStartup). await client.ConnectAsync(3000); await using var writer = new StreamWriter(client) { AutoFlush = true }; await writer.WriteLineAsync(kiosk ? "kiosk" : "windowed"); } }