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读取数据,或者只解析字符串,然后计算进度。如果要启动另一个进程,在此处显示进度的唯一方法是不带数字地显示进度(请参阅)。可以使用黑客的方式(类似于抗病毒药物的工作方式),例如,但这很复杂。另一种选择是自己编写该实用程序的功能。