【问题标题】:Background Worker's ReportProgress percentage argument C#后台工作人员的 ReportProgress 百分比参数 C#
【发布时间】:2015-04-11 21:26:09
【问题描述】:

有没有办法将Double 变量类型提供给Background WorkerReportProgress 方法,以便百分比以小数点显示? (例如 12.07%)或者我应该简单地将它作为 UserState 参数传递然后转换它? 这个方法默认允许Double输入不是更好吗?

【问题讨论】:

  • 老实说,我认为没有人对 0.01(甚至 .1)的进度百分比感兴趣......说真的,如果它这么长(其中 .1 可能意味着 10 分钟,并且不断的反馈至关重要) ... ) 那么单个进度不是您所需要的。
  • @AdrianoRepetti 我不明白你的说法。这项任务可能需要几个小时,我相信小数点确实可以更好地了解正在发生的事情。有时人们会在看到进度条停留在 1% 一段时间后取消任务
  • 我会在 UX 上发布这个而不是 SO,但是:小数很杂乱,它们不会给你更有意义的信息,你希望它们改变只是因为用户会看到 发生了一些事情乙>。我会保持进度整数并添加另一个视觉反馈。任务名称、步骤名称、任务/子任务进度。其他的。

标签: c# backgroundworker


【解决方案1】:

简单的方法是传递 0 到 10000 之间的数字,而不是 0 到 100。

然后将它们除以 100d 以获得 2 位小数精度百分比。

有时我发现自己甚至传递枚举值而不是百分比。

【讨论】:

  • 不错。我相信这就是我最终会做的事情
  • 我不同意,但我不赞成最后一段...我不同意滥用一个应该是百分比的可怜整数,但是...枚举?
  • @AdrianoRepetti 我同意,但只要它是独立的,我可以原谅。另一种选择是改用UserState。第三种选择是用泛型类包装BackgroundWorker,这将允许您将任何类型作为进度(或参数)。最后一个选项将不可避免地使用UserState 本身。
  • 是的,我有点讽刺,我没有那么严格,但我真的会选择其他选项。好吧,实际上我不会使用小数来提供某些变化的反馈(经过的时间、剩余时间、任务的步骤标签、拆分为较短的任务、重复的视觉反馈),但那是另一回事了(off- SO的主题)...
【解决方案2】:

根据MSDN,不存在采用Double 进度百分比的BackgroundWorker.ReportProgress 方法重载。

我认为没有任何必要。

但是有几种方法可以实现如果你真的需要

  1. 956 (95.6%) 等格式传递整数,并在显示时简单地进行除法。
  2. 使用userState 参数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多