gpt4 book ai didi

c# - 使用 C# 中的 mysqldump 性能低下

转载 作者:行者123 更新时间:2023-11-29 03:10:20 24 4
gpt4 key购买 nike

我正在尝试使用以下代码从我的 C# 控制台应用程序启动 mysqldump:

ProcessStartInfo procInfo = new ProcessStartInfo("mysqldump", "avisdb -uroot -p" + cs.Password);
procInfo.CreateNoWindow = true;
procInfo.RedirectStandardOutput = true;
procInfo.UseShellExecute = false;
Process proc = new Process();
proc.StartInfo = procInfo;
proc.Exited += new EventHandler(proc_Exited);
proc.Start();

proc.WaitForExit();

File.Delete("dump.sql");
StreamWriter dump = File.AppendText("dump.sql");
dump.Write(proc.StandardOutput.ReadToEnd());
dump.Flush();
dump.Close();

当我的数据库为空时它工作得很好,但是当数据库被填充时它需要很长时间...通过 cmd 启动命令只需要几秒钟。我可以看到它在 proc.WaitForExit() 上停止

提前致谢!

最佳答案

在 StandardOutput.ReadToEnd() 之前调用 WaitForExit() 会导致死锁情况,先调用 ReadToEnd() 应该没问题。

来自 MSDN 的详细信息,http://msdn.microsoft.com/en-us/library/system.diagnostics.processstartinfo.redirectstandardoutput.aspx

The code example avoids a deadlock condition by calling p.StandardOutput.ReadToEnd before p.WaitForExit. A deadlock condition can result if the parent process calls p.WaitForExit before p.StandardOutput.ReadToEnd and the child process writes enough text to fill the redirected stream. The parent process would wait indefinitely for the child process to exit. The child process would wait indefinitely for the parent to read from the full StandardOutput stream.

关于这个问题的帖子, ProcessStartInfo hanging on "WaitForExit"? Why?

关于c# - 使用 C# 中的 mysqldump 性能低下,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9521644/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com