Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从C使用mysqldump时性能降低#_C#_Mysql_Mysqldump - Fatal编程技术网

C# 从C使用mysqldump时性能降低#

C# 从C使用mysqldump时性能降低#,c#,mysql,mysqldump,C#,Mysql,Mysqldump,我正试图使用以下代码从我的C#控制台应用程序启动mysqldump: ProcessStartInfo procInfo = new ProcessStartInfo("mysqldump", "avisdb -uroot -p" + cs.Password); procInfo.CreateNoWindow = true; procInfo.RedirectStandardOutput = true; procInfo.UseShellExecute = false; Process proc

我正试图使用以下代码从我的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的详细信息

代码示例通过以下方式避免死锁情况: 在p.WaitForExit之前调用p.StandardOutput.ReadToEnd。僵局 如果父进程在之前调用p.WaitForExit,则可能会产生条件 p、 StandardOutput.ReadToEnd和子进程将足够的文本写入 填充重定向的流。父进程将无限期地等待 使子进程退出。子进程将等待 无限期地让父级读取完整的StandardOutput 小溪

那么关于这个问题,,

WaitForExit()不是问题所在。。我想知道您的SQL是什么样子的。。如果数据库为空。。那么你必须问,你想做什么。。???我还建议您释放创建新对象的对象的资源。。另外,dump变量在哪里声明..对于'empty'我指的是在8个表中有大约12条记录,对于'populated'我指的是在一个表中有大约10000条记录,在另一个表中有300条记录,在其余的表中有100条记录。。。如果我通过命令行启动mysqldump,则需要几秒钟时间通过C#转储填充的数据库。。。嗯,它已经运行了两个小时,但还没有完成。。。转储streamwriter在WaitForExit之后的第二行声明