我正在使用以下代码C#Process实例为PostgreSQL进行CSV导入。
Process process = new Process()
{
StartInfo = new ProcessStartInfo
{
FileName = @"cmd.exe",
Arguments = $"/c cat \"{filePath}\" | psql -h 127.0.0.1 -U {user} -d {dbname} -w -c \"copy data_temp from stdin csv header\" ",
RedirectStandardOutput = true,
UseShellExecute = false,
CreateNoWindow = true,
}
};
process.Start();
string result = process.StandardOutput.ReadToEnd();
process.WaitForExit();
process.Dispose();
它可以工作,但我查看任务管理器,过了一会儿,有许多PostgreSQL进程在运行,最终数据库被锁定。
我是否无法正常关闭进程?如何确保它不会保持打开状态?
答案 0 :(得分:-1)
不确定这是否有帮助,但这是我有两个通过msiexec和Exe杀死进程的示例。
正在卸载Msiexec.exe文件…
Process x = new Process();
x.StartInfo.FileName = "msiexec.exe";
x.StartInfo.Arguments = "/qb /x {81681F4C-83F1-4F22-9AEB-C7DA7C372EA2}";[quiet uninstall]
x.Start();
x.WaitForExit();
和
卸载exe(文件路径方法,不是msiexec)
Process a = new Process();
a.StartInfo.FileName = JPRO_8_5_0; //defined in a string before hand.
a.StartInfo.Arguments = "/uninstall /quiet";
a.Start();
a.WaitForExit();
您可以尝试使文件名成为之前定义的字符串,而不用将其命名为@“ cmd.exe”,这可能会有所帮助!