【问题标题】:C# : how can i control the percentage of work done while dumping with mysqldump?C#:如何控制使用 mysqldump 转储时完成的工作百分比?
【发布时间】:2017-04-26 14:58:22
【问题描述】:

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

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 应用程序的代码隐藏运行 mysqldump,我不知道我该怎么做明白了。

【问题讨论】:

  • 你正在启动另一个进程,这里显示进度的唯一方法是不带数字显示它(参见this)。可以使用 hacky 方式(类似于防病毒软件的工作方式),例如hooking file copy,但这很复杂。另一种选择是自己编写该实用程序的功能。

标签: c# mysql wpf


【解决方案1】:

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

1000 of ~10000 rows dumped for table ...

您可以使用正则表达式读取数据或仅解析字符串然后计算进度。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-11
    • 1970-01-01
    • 1970-01-01
    • 2011-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多