首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WaitForExit ()剩余未完成

WaitForExit ()剩余未完成
EN

Stack Overflow用户
提问于 2021-02-05 10:18:25
回答 2查看 32关注 0票数 0
代码语言:javascript
复制
public void btnBackup_Click(object sender, EventArgs e)
    {
        BackupDatabase(
            "localhost",
            "5432",
            "postgres",
            "***********",
            "PerfectFreight",
            txtPath.Text,
            "Backup #",
            "C:\\Program Files\\PostgreSQL\\13\\bin\\");
    }
    public static string BackupDatabase(
        string server,
        string port,
        string user,
        string password,
        string dbname,
        string backupdir,
        string backupFileName,
        string backupCommandDir)
    { 
        try
        {
            Environment.SetEnvironmentVariable("PGPASSWORD", password);

            string backupFile = backupdir + backupFileName + DateTime.Now.ToString("MM") + "_" + DateTime.Now.ToString("dd") + "_" + DateTime.Now.ToString("yyyy") + "_Time»" + DateTime.Now.ToString("HH") + ";" + DateTime.Now.ToString("mm") + ".backup";

            string BackupString = " -U " + user + " -h " + server + " -p " + port + " -d " + dbname + " -F c -b -v -f \"" + backupFile;

            Process proc = new Process();
            proc.StartInfo.FileName = backupCommandDir + "\\pg_dump.exe";

            proc.StartInfo.Arguments = BackupString;

            proc.StartInfo.RedirectStandardOutput = true;//for error checks BackupString
            proc.StartInfo.RedirectStandardError = true;

            proc.StartInfo.UseShellExecute = false;//use for not opening cmd screen
            proc.StartInfo.CreateNoWindow = true;//use for not opening cmd screen

            proc.Start();
            proc.WaitForExit();
            proc.Close();

            MessageBox.Show("Backup successfully created");


            return backupFile;

            
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.ToString());
            return null;
        }
    }

程序开始运行但没有结束,它不会给出错误。在指令proc.WaitForExit();中,执行就像在无限循环中一样停滞。

EN

回答 2

Stack Overflow用户

发布于 2021-02-05 16:18:51

pg_dump的参数结果如下所示

代码语言:javascript
复制
-U postgres -h localhost -p 5432 -d PerfectFreight -F c -b -v -f "...Backup #02_05_2021_Time»10;32.backup

除了疯狂的文件名之外,还有一些严重的问题:

你忘记了end中的右双引号

  • 选项-v并不表示“详细”,而是设置一个变量并需要一个参数

试着先想出一个有效的命令,然后在程序中使用它。

票数 0
EN

Stack Overflow用户

发布于 2021-02-05 18:20:12

您正在传递的应用程序参数肯定存在错误,因此您正在启动的应用程序的进程由于该应用程序代码或参数中的错误而无法完成其工作。如果您启动的目标进程由于某种原因挂起,WaitForExit()将完全按照方法的提示执行操作,您的应用程序也会挂起。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66056680

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档