当 startet 退出事件时,在 C# 中启动 sqlcmd 进程不起作用
Posted
技术标签:
【中文标题】当 startet 退出事件时,在 C# 中启动 sqlcmd 进程不起作用【英文标题】:Starting sqlcmd process in C# doesn't work when startet with exited event 【发布时间】:2019-07-24 14:14:58 【问题描述】:为什么这段代码有效?
Process sql = Process.Start("sqlcmd.exe", param);
sql.WaitForExit(21600000);
但是当我运行这段代码时没有任何反应:
Process sql = new System.Diagnostics.Process();
sql.EnableRaisingEvents = true;
sql.Exited += new EventHandler(sql_Exited);
sql.StartInfo.FileName = @"sqlcmd.exe";
sql.StartInfo.Arguments = param;
sql.Start();
this.Dispatcher.Invoke((Action)(() => I_loader.Visibility = Visibility.Visible; ));
退出事件:
private void sql_Exited(object sender, System.EventArgs e)
eventHandled = true;
this.Dispatcher.Invoke((Action)(() => I_loader.Visibility = Visibility.Hidden; ));
变量参数的值如下:
-S .\\SQLEXPRESS -d mydatabase -v db_src = \"c:\\temp\\update.bak\" -i db\\update.sql -o \"C:\\myprogram\\bin\\Debug\\log\\log_update.txt\"
【问题讨论】:
【参考方案1】:现在可以使用此代码。不过,我真的不知道为什么或有什么不同。
Process sql = new Process();
sql.StartInfo.CreateNoWindow = true;
sql.StartInfo.UseShellExecute = true;
sql.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
sql.StartInfo.FileName = @"sqlcmd.exe";
sql.StartInfo.Arguments = param;
sql.EnableRaisingEvents = true;
sql.Exited += new EventHandler(sql_Exited);
sql.Start();
【讨论】:
以上是关于当 startet 退出事件时,在 C# 中启动 sqlcmd 进程不起作用的主要内容,如果未能解决你的问题,请参考以下文章
C#中,运行程序时提示:无法直接启动还有类库输出类型的项目?