Печать информации в командном окне при запуске процесса sqlcmd в программе ac # - PullRequest
1 голос
/ 29 мая 2019

Я запускаю процесс обновления из моей программы на c # wpf следующим образом:

Process sql = Process.Start("sqlcmd.exe", param);
sql.WaitForExit(1200000);   

Переменная param создается из пользовательского ввода в пользовательском интерфейсе, вот пример:

sqlcmd.exe -S .\SQLEXPRESS -d mydatabase -v db_src = "db\file.bak" -i db\update.sql -o "\log\log_update.txt"

Теперь черное окно cmd открывается и работает некоторое время (1-5 минут). На некоторых машинах белый curos мигает. Я хочу, чтобы в окне cmd было напечатано что-то вроде "Please wait... & ".

Я пробовал разные подходы, но sqlmd стирает все. Как поставить echo Please wait... перед param.

Отображение чего-либо в программе на c # также затруднено, поскольку во время выполнения программы программа зависает. Но если кто-нибудь знает решение, которое позволяет отображать сообщение в программе, это также будет хорошо.

1 Ответ

1 голос
/ 29 мая 2019

Использование .WaitForExit() блокирует ваш текущий поток приложения. Вместо этого вы должны просто запустить процесс в фоновом режиме и дождаться события Exited.

Цитировать MSDN - см. Примечания :

WaitForExit () заставляет текущий поток ждать, пока соответствующий процесс завершается. Это должно быть вызвано после того, как все другие методы призвал на процесс. Чтобы избежать блокировки текущего потока, используйте Выход из события.

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

...