简体   繁体   中英

C# Process is not stopping

I am using the below code C# Process instance to do a CSV import for PostgreSQL.

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();

It works but I look in task manager and after a while there is lot of PostgreSQL processes running and eventually the database gets locked.

Am I not closing the process down properly? How can I ensure it doesn't stay open?

Not to sure if this could help or not but here are two examples I have of killing processes via msiexec and Exe.

Uninstalling Msiexec.exe files…

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();

and

Uninstalling exe (file path method, not 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();

You can try making the filename a string that is defined before instead of having it as @"cmd.exe", that might help!

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM