我在C#中有一个多层应用程序,该应用程序应该在数据库上执行任务(如果首次使用,我们可以创建数据库并填写一些数据)。当我最初设计应用程序时,我没有考虑可能的进度栏控制,更不用说任何形式的进度报告了。如何修改应用程序的设计以报告数据库操作到UI层的进度?是否有可以重复使用的解决方案,并且不强迫我修改我的所有功能以获取报告的其他输入?

有帮助吗?

解决方案

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

为了进行进度报告工作,您需要执行工作的代码,以便在完成工作单位时提高事件。该事件需要在UI层和进度指标上更新。

一个好的起点是研究使用背景工作者(这里有一个MSDN上的示例 - http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker.aspx)。一旦您熟悉背景工作者,您应该可以更好地确定需要对应用程序进行哪些更改。

其他提示

正如格雷格所说,未来还有很多工作。但是,有很多方法可以解决问题,最适合您的方法取决于哪些上下文信息从客户端传递到应用程序/数据库层。例如,如果会话令牌或事务标识符在执行查询/事务或确认参考引用中从应用程序中传递到应用程序的正常课程中,将其从应用程序转移到客户端,则将其转移到客户端,然后对于这些查询/交易。进度报告是必要的,您可以使应用程序更新一个状态表,客户表可以查询。这可以减少所需的重新工作量。基本上,您需要考虑已经到位的“中间件”,看看是否可以利用任何一个以使跨层的交易相关联。

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

这将使您能够对进度进行改造支持,而不会对您对服务器的现有调用产生任何影响,只需在UI检查中添加一个新的背景线程,以获取更新的进度信息,而长期运行的任务正在进行中。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top