Можно ли сделать так, чтобы консольное приложение .net возвращало управление, пока поток все еще выполняется?

Предположим, у меня есть консольное приложение .net, которое выполняет какой-то длительный код в потоке.

Я хотел бы, чтобы консольное приложение завершилось, пока поток все еще работает. В частности, я хотел бы запустить консольное приложение из пакетного файла или другого процесса, который запустит длительный процесс, а затем продолжит выполнять другие действия, пока выполняется длительный поток.

Если это невозможно, единственным известным мне обходным путем будет использование служебной программы для размещения долго выполняющегося потока.

Можно ли сделать так, чтобы консольное приложение возвращало управление, как я описал?


person Vivian River    schedule 09.09.2013    source источник
comment
вы можете взглянуть на system.diagnostic.process   -  person Rômulo Spier    schedule 09.09.2013


Ответы (1)


Потоки выполняются в контексте процесса, в котором они размещены. Поэтому, если вы завершите свою консоль или «вернете управление», что вы можете сделать, ваш поток не завершится (более вероятно, что ваш поток предотвратит выход вашего приложения, чего вы также не хотите).

Вы можете имитировать возврат управления пакетному файлу/оболочке с помощью команды запуска:

c:\>start myconsole

Это создает новое командное окно, в котором ваш процесс выполняется синхронно, но пакетный файл, из которого вы его запустили, не должен ждать.

Вы также можете «симулировать» его, создав дочерний процесс. См. идею Process.Start().

person Kit    schedule 09.09.2013