C#ProgressBar设计模式

C#ProgressBar设计模式,c#,design-patterns,progress-bar,C#,Design Patterns,Progress Bar,我正在开发一个数据库升级应用程序。升级程序更新数据库的架构(通过执行SQL语句向现有数据库添加新列、重命名列、添加新表、新视图)。当用户希望从1.0版升级到2.0版时,将从对象工厂获取“Upgrader”对象,并调用每个“Upgrader”的“Execute”方法。应用程序的GUI有一个进度条,每次upgrader对象执行SQL语句时,进度条都会增加 while (!version.Equal(CurrentVersion)) {

我正在开发一个数据库升级应用程序。升级程序更新数据库的架构(通过执行SQL语句向现有数据库添加新列、重命名列、添加新表、新视图)。当用户希望从1.0版升级到2.0版时,将从对象工厂获取“Upgrader”对象,并调用每个“Upgrader”的“Execute”方法。应用程序的GUI有一个进度条,每次upgrader对象执行SQL语句时,进度条都会增加

            while (!version.Equal(CurrentVersion))
            {

                 IUpgrader myUpgrader = UpgraderFactory.GetUpgrader(version);

                 myUpgrader.Execute(UpgradedFile,progressbar);

                 version.Increment();
            }
我的问题很简单:upgrader对象应该如何与progressbar通信。在上面的代码中,upgrader对象可以直接访问progressbar,但我想知道是否有更好的方法来实现这一点,或者是否存在更好的设计模式

问候,,
Seb

我可能会为进度条操作设置一个界面(C#示例):

然后我会让Upgrader对象接受该接口类型的参数。最后,我将创建一个实现接口的类,该类还包含对进度条组件的引用,该组件用于可视化进度


这样,升级程序和进度可视化方式之间就不会紧密耦合。

我可能会为进度条操作创建一个界面(C#示例):

然后我会让Upgrader对象接受该接口类型的参数。最后,我将创建一个实现接口的类,该类还包含对进度条组件的引用,该组件用于可视化进度


这样,升级程序和进度可视化方式之间就不会有紧密的耦合。

要实现,我将向IUpgrader添加一个从升级程序馈送的ProgesEvent。gui可以向该事件添加eventlisteners,并相应地更新progessbar


许多应用程序都在运行。他们使用一个计时器来推进进度条,使繁忙的应用程序保持活动状态。

为了实现,我将向IUpgrader添加一个从升级程序馈送的进度事件。gui可以向该事件添加eventlisteners,并相应地更新progessbar

许多应用程序都在运行。他们使用计时器推进进度条,使繁忙的应用程序保持活动状态

interface IProgressBar
{
     int MinValue { get; set; }
     int MaxValue { get; set; }
     int Value { get; set; }
}