Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.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#:使用mysqldump转储时,如何控制完成的工作百分比?_C#_Mysql_Wpf - Fatal编程技术网

C#:使用mysqldump转储时,如何控制完成的工作百分比?

C#:使用mysqldump转储时,如何控制完成的工作百分比?,c#,mysql,wpf,C#,Mysql,Wpf,由于这个应用程序的用户通常会转储非常大的数据库,所以我认为在屏幕上显示一个进度条会很好。问题是我不知道怎么做 ProcessStartInfo psi = new ProcessStartInfo(); psi.FileName = "mysqldump.exe" Process process = Process.Start(psi); while (!process.StandardOutput.EndOfStream) { (send

由于这个应用程序的用户通常会转储非常大的数据库,所以我认为在屏幕上显示一个进度条会很好。问题是我不知道怎么做

ProcessStartInfo psi = new ProcessStartInfo();
psi.FileName = "mysqldump.exe"
Process process = Process.Start(psi);
while (!process.StandardOutput.EndOfStream)
            {
                (sender as BackgroundWorker).ReportProgress(// insert percentage here));
                writer.Write((char)process.StandardOutput.Read());
            }
process.WaitForExit();
writer.Close();
process.Close();
这是我的一段代码,我想将我的百分比发送到报告进度


我知道mysqldump有类似于--show progress size的功能,但这应该可以显示shell中的进度,因为我是从WPF应用程序的codebehind运行mysqldump的,我不知道如何才能得到它。

因为你不知道输出中的数据量,所以你无法计算进度,因为你不知道什么是100%。 您可以尝试逐行读取输出并解析由提供的字符串 --显示进度大小参数。我想它看起来像:

1000 of ~10000 rows dumped for table ...

您可以使用Regex读取数据,或者只解析字符串,然后计算进度。

如果要启动另一个进程,在此处显示进度的唯一方法是不带数字地显示进度(请参阅)。可以使用黑客的方式(类似于抗病毒药物的工作方式),例如,但这很复杂。另一种选择是自己编写该实用程序的功能。