【问题标题】:Starting sqlcmd process in C# doesn't work when startet with exited event当 startet 退出事件时,在 C# 中启动 sqlcmd 进程不起作用
【发布时间】: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\"

【问题讨论】:

    标签: c# sql-server process sqlcmd exit-code


    【解决方案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();
    

    【讨论】:

      猜你喜欢
      • 2012-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-24
      • 1970-01-01
      • 1970-01-01
      • 2011-06-21
      相关资源
      最近更新 更多