Можно ли сделать управление возвратом консольного приложения.net, пока поток еще выполняется?
Предположим, у меня есть консольное приложение.net, которое выполняет некоторый долго выполняющийся код в потоке.
Я хотел бы заставить консольное приложение завершаться, пока поток еще работает. В частности, я хотел бы запустить консольное приложение из пакетного файла или другого процесса, который запустит долго выполняющийся процесс, а затем продолжит делать другие вещи, пока выполняется долго работающий поток.
Если это невозможно, единственный известный мне обходной путь - это иметь сервисную программу, в которой размещается долго работающий поток.
Можно ли сделать управление возвратом консольного приложения, как я описал?
1 ответ
Потоки запускаются в контексте процесса, который их размещает. Таким образом, если вы прервете свою консоль или "возврат управления", что вы можете сделать, ваш поток не будет завершен (более вероятно, что ваш поток будет препятствовать выходу вашего приложения, что также не нужно).
Вы можете смоделировать возврат управления командному файлу / оболочке с помощью команды запуска:
c:\>start myconsole
Это создаст новое командное окно, в котором ваш процесс будет выполняться синхронно, но пакетный файл, из которого вы запустили его, не будет ждать.
Вы также можете "имитировать" его, порождая дочерний процесс. Смотрите Process.Start() для идеи.