C# 使用进度条设计多层应用程序

C# 使用进度条设计多层应用程序,c#,progress-bar,multi-tier,C#,Progress Bar,Multi Tier,我在c#中有一个多层应用程序,它应该在数据库上执行任务(如果第一次使用,我们可以创建数据库并用一些数据填充它)。最初设计应用程序时,我没有考虑可能的进度条控件,更不用说任何类型的进度报告了。如何修改应用程序的设计,以便能够向UI层报告数据库操作进度?有没有一种解决方案是可重用的,并且不会强迫我修改所有函数以获取报告的额外输入?没有。根据应用程序的大小,您还有很多工作要做 要使进度报告正常工作,您需要执行工作的代码,以便在工作单元完成时引发事件。需要在UI层处理该事件,并更新进度指标 从使用Bac

我在c#中有一个多层应用程序,它应该在数据库上执行任务(如果第一次使用,我们可以创建数据库并用一些数据填充它)。最初设计应用程序时,我没有考虑可能的进度条控件,更不用说任何类型的进度报告了。如何修改应用程序的设计,以便能够向UI层报告数据库操作进度?有没有一种解决方案是可重用的,并且不会强迫我修改所有函数以获取报告的额外输入?

没有。根据应用程序的大小,您还有很多工作要做

要使进度报告正常工作,您需要执行工作的代码,以便在工作单元完成时引发事件。需要在UI层处理该事件,并更新进度指标


从使用BackgroundWorker开始(这里有一个MSDN示例-)是一个很好的开始。一旦您熟悉BackgroundWorker,您应该能够更好地决定需要对应用程序进行哪些更改。

否。根据应用程序的大小,您还有很多工作要做

要使进度报告正常工作,您需要执行工作的代码,以便在工作单元完成时引发事件。需要在UI层处理该事件,并更新进度指标


从使用BackgroundWorker开始(这里有一个MSDN示例-)是一个很好的开始。熟悉BackgroundWorker后,您应该能够更好地决定需要对应用程序进行哪些更改。

您可以修改服务器代码,以便它在服务器端更新进度信息(而不更改功能签名),然后有一个单独的方法可以单独查询这些信息

这将允许您改进对进度的支持,而不会对您对服务器的现有调用产生任何影响,只需在UI上添加一个新的后台线程,在执行长时间运行的任务时检查更新的进度信息


编辑:我想同样的方法也适用于客户端中发生的任务。但是,这里也可以使用静态进度指示器类。

您可以修改服务器代码,使其在服务器端更新进度信息(不更改函数签名),然后使用单独的方法单独查询此信息

这将允许您改进对进度的支持,而不会对您对服务器的现有调用产生任何影响,只需在UI上添加一个新的后台线程,在执行长时间运行的任务时检查更新的进度信息


编辑:我想同样的方法也适用于客户端中发生的任务。不过,这里也可以使用静态进度指示器类。

正如格雷格所说,前面还有很多工作要做。然而,有许多方法可以解决这个问题,而最适合您的方法取决于什么上下文信息已经从客户端传递到应用程序/数据库层。例如,如果在执行查询/事务的正常过程中将会话令牌或事务标识符从客户端传递到应用程序,或者从应用程序异步传递回客户端的确认引用,然后,对于那些需要进度报告的查询/事务,您可以让应用程序更新客户端可以查询的状态表。这可以减少所需的返工量。基本上,你必须考虑“中间件”已经到位,看看是否可以利用这些来关联跨层事务。

< P>正如格雷戈所说,还有很多工作要做。然而,有许多方法可以解决这个问题,而最适合您的方法取决于什么上下文信息已经从客户端传递到应用程序/数据库层。例如,如果在执行查询/事务的正常过程中将会话令牌或事务标识符从客户端传递到应用程序,或者从应用程序异步传递回客户端的确认引用,然后,对于那些需要进度报告的查询/事务,您可以让应用程序更新客户端可以查询的状态表。这可以减少所需的返工量。基本上,你必须考虑“中间件”已经到位,看看是否可以利用这些来关联跨层事务。< / P>祝你好运。(报道)进展很艰难,祝你好运。(报告)进展艰难