【问题标题】:Printing information in the command window while running a sqlcmd process in a c# program在 c# 程序中运行 sqlcmd 进程时在命令窗口中打印信息
【发布时间】:2019-05-29 12:47:51
【问题描述】:

我从我的 c# wpf 程序运行更新过程,如下所示:

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

变量参数是根据用户在 ui 中的输入构建的,这里是一个示例:

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 会闪烁。我想要的是像"Please wait... & "这样的东西打印在cmd窗口上。

我尝试了不同的方法,但 sqlmd 删除了所有内容。就像在参数前面放一个echo Please wait...

在 c# 程序中显示某些内容也很困难,因为在进程运行时,程序被冻结。但是,如果有人知道可以在程序中显示消息的解决方案,那也很好。

【问题讨论】:

    标签: c# wpf cmd process sqlcmd


    【解决方案1】:

    使用.WaitForExit() 会阻塞您当前的应用程序线程。相反,您应该在后台启动该进程,然后等待 Exited 事件。

    引用MSDN - see the remarks

    WaitForExit() 使当前线程等待直到关联的 进程终止。它应该在所有其他方法都完成后调用 调用过程。为避免阻塞当前线程,请使用 已退出事件。

    如果您的线程没有被阻止,您可以编写实际出现的进度/状态消息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-17
      • 2011-08-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多