gpt4 book ai didi

c# - C# 中的进度监视器实现

转载 作者:行者123 更新时间:2023-11-30 22:50:12 27 4
gpt4 key购买 nike

在 Eclipse 中,我看到了 IProgressMonitor 的实现 - 随后也在 SharpDevelop 中,但我不确定它是如何工作的。在其他地方是否有这样的示例可能更容易理解一些?

我想要实现的是一种通过一个进度条(可以在任何时间点添加任务)跟踪一堆任务(从 20 分钟到 5 秒不等)的进度的方法。

这样的东西会是一个不错的选择/想法吗?

interface ITask
{
int TotalWork; // ProgressMax
event Progresschanged; // Notifies of the current progress
event ProgressComplete;
}

那么“Monitor”就简单的使用Observer模式来监听这两个事件。当所有进度条都完成后,它将隐藏进度条。另一个问题是这些是正在生成的单独线程。

谁能给我一些建议或引导我走上正确的道路?

最佳答案

维护任务列表并根据它们的总体贡献对它们进行加权;

struct Task { int work, progress  }
class OverallProgress
{
List<Task> tasks;
int Work { get { return tasks.Sum(t=>t.work; } }
int Progress { get { return tasks.Sum(t=>t.progress/t.work); } }
void AddTask(Task t) { tasks.Add(t); }
}

此实现仅用于说明概念

是的,这个实现效率不高。您可以存储计算的 Work,以便仅在添加新任务时才重新计算它。

是的,您可能会因进行整数除法而失去精度。您还必须连接自己的事件。

如果您在执行这些任务时遇到问题,请提出来,我或其他人可以提供此类的完整实现。

关于c# - C# 中的进度监视器实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/696895/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com