在您的应用程序中执行长时间操作时,如何将业务层中的信息提升到UI?
活动? 传入挂钩到UI的状态对象?
在我开始之前,我只是想知道你们和女孩们想出了什么狡猾的方式。
答案 0 :(得分:1)
我通常有两种方法:
答案 1 :(得分:0)
你应该区别对待:这可以在GUI应用程序中完成,这需要批量完成。
运行5分钟的东西:你的gui-app还是批处理?
答案 2 :(得分:0)
如果我们考虑一个典型的Web应用程序 - 不使用COMET等推送技术的应用程序,浏览器将间歇性地获取更新的信息,可能是在用户请求时,也许是在进行AJAX后台调用时。
在那种情况下,我的服务提供了状态操作。
int requestSomeWork( ... data ... ) ; // returns an id
Status getStatus( int id ); // tell me about a previously submitted request
此样式不仅可用于显示进度信息,还可用于从故障情况中恢复。我可以提供其他方法,以便我们可以确定如果浏览器或服务器崩溃就像我们创建请求时发生了什么
int[] findRequest( ... search Criteria ... ); // I think I submitted a request like ... what's its id?
如果我们有一个“实时”UI,胖客户端或COMET,那么我们可以添加事件处理
void registerForUpdates( id, callMe );
答案 3 :(得分:0)
这似乎正是为什么事件设计的。让其他对象知道该对象的更改。
有一个ProgressUpdated事件报告一个进度百分比或沿线的东西是我会怎么做。