如何从业务/模型类发送进度更新?

2024-02-10

假设我们有一个具有分层架构的应用程序。在视图上我们使用 MVC 或 MVVM。模型被视为域,它有很好的业务逻辑部分。

现在假设我们在模型中有一个需要一些时间的方法。例如,必须对对象的每个项目进行复杂的计算或处理。

在 UI 中,我们希望显示一个进度条和一个显示当前计算步骤的文本(例如包含所有过程历史记录的列表框)。

你会怎么做?如何从模型发送流程进度信息以及如何连接 Controller 或 ViewModel 以便更新进度?


我经常通过以下方式实现这一点。我的业务层流程需要很长时间才能运行,经常会引发事件以表明它正在达到特定的“里程碑”。您可以决定通过事件来表明哪些里程碑以及事件的数量。例如,如果您的耗时过程是一个简单的循环,您可以选择在循环中每 10% 的项目一次又一次引发相同的事件。如果这是一个具有不同阶段的流程,您可以选择在每个阶段完成时引发不同的事件。

现在,您的表示层订阅这些事件并相应地执行操作,更新进度条、文本或其他内容。

这个机制很好,因为:

  1. 业务层独立于表示层中可能发生的事情。
  2. 很容易扩展双向通信。您可以轻松地更改事件,以便表示层(或任何其他订阅者)可以返回取消标志,以便业务层知道必须取消长时间运行的流程。
  3. 它允许同步或异步工作。也就是说,您可以在阻塞调用(即您的表示层和业务层共享同一线程)或非阻塞调用(即您的业务层使用后台工作线程)上使用它。这System.ComponentModel.BackgroundWorker http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker.aspxclass 可以在后一种情况下使用,但如果您想引发多种类型的事件,则不太好。

希望这可以帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从业务/模型类发送进度更新? 的相关文章

  • 是否有用于序列化和反序列化各种格式的对象层次结构的模式?

    给定一个复杂的对象层次结构 幸运的是它不包含循环引用 如何实现支持各种格式的序列化 我不是来讨论实际实施的 相反 我正在寻找可能派上用场的设计模式的提示 更准确地说 我正在使用 Ruby 我想解析 XML 和 JSON 数据以构建复杂的对象
  • 在 Codeigniter 中使用/嵌入 Ember js

    我即将开始开发一个 Web 应用程序 使用 Ember js 作为前端技术 使用 Codeigniter 作为后端 我遇到的问题是如何在 codeigniter 中嵌入或使用 ember js 可以通过 Web 服务从 codeignite
  • 如何在无 null 设计中实现 List、Set 和 Map?

    当您在大多数情况下可以返回 null 空对象以避免 null 时 这很好 但是像 Collection 这样的对象呢 在爪哇 Map回报null if key in get key 地图上没有找到 我能想到的最好的避免方法null在这种情况
  • socket.io 广播功能 & Redis pub/sub 架构

    如果有人能帮助我解决一个小疑问 我将不胜感激 使用socket io广播功能和在Redis上使用pub sub设计架构有什么区别 例如 在另一个示例中 node js 服务器正在侦听 socket io 针对 键 模型 todo 和值 数据
  • SOA架构数据访问

    在我的 SOA 架构中 我有几个世界碳基金服务 我的所有服务都需要访问数据库 我应该创建一个专门的 WCF 服务来负责所有数据库访问吗 或者 如果我的每个服务都有自己的数据库访问权限 可以吗 在一个版本中 我在一项服务中只实例化了一个实体层
  • 如何在MVVM中实现appSettings

    我正在尝试摆脱我使用的警告appSettings在 WPF 项目中 应用程序配置
  • 禁止/阻止选择 wpf 中禁用的组合框项目

    我正在编写一个应用程序 其中我想禁用其中的一些项目ComboBox并且还想禁止 阻止选择禁用的项目 请注意ComboBox在主窗口中有另一个 ComboBox 作为 ComboBox Item init 在运行时由DataTemplateS
  • 如何确保 ViewModel 属性在再次更改其值之前已绑定在视图上?

    有以下情况 ViewModel有一个变化非常快的对象 通过不同的线程 View通过以下方式获悉NotifyPropertyChanged界面 但似乎它的工作速度很慢 并且在视图绑定新值并绘制它之前 它会更改更多次 因此它会丢失一些值 我也尝
  • Node 和 General 中的 MVC:模型如何与视图绑定?

    我从 node js 开始 正在制作一个简单的 MVC 框架 到目前为止 我已经有一个前端控制器 或 调度程序 如果你愿意的话 可以工作 路由通过调度程序配置模块进行 如图所示 我的问题在最后 紧接代码之后 另外 这是学习node的练习 请
  • WPF MVVM 在窗口关闭时调用 ViewModel Save 方法

    我已经弄清楚如何从我的 ViewModel 关闭窗口 现在我需要从另一侧解决窗口关闭问题 当用户单击窗口的关闭按钮时 我需要在 ViewModel 中触发 Save 方法 我正在考虑将 Command 属性绑定到 Window 的关闭事件
  • 我对 MVVM 模式有一些疑问

    我叫 Jes s 来自西班牙 是一名 NET 开发人员 几天前我刚刚发现了这个伟大的网络 我有一些关于 MVVM 模式的问题 如果您能回答我 我将很高兴 我三个月前开始使用 WPF 并且学习了 MVP 模式 MVP 非常好 因为您可以很好地
  • WPF中ViewModel是否应该继承DependencyObject?

    我尝试创建一个简单的UserControl在 WPF 中使用 MVVM 现在我需要为UserControl 所以我尝试在中创建依赖属性UserControlViewModel 我不想处于代码隐藏状态 为了创建依赖属性UserControlV
  • 注销按钮在 mvc 应用程序中不起作用

    我有一个具有不同用户帐户和密码的 MVC 应用程序 登录功能工作正常 但当我单击注销按钮时 出现 404 错误 应用程序中的服务器错误 无法找到该资源 描述 HTTP 404 您正在查找的资源 或其依赖项之一 可能已被删除 名称已更改或暂时
  • 如何使用 Google 的 GithubBrowserSample 方法在片段之间共享视图模型?

    我对 Android 架构组件的使用非常陌生 因此我决定使用 GithubBrowserSample 来构建我的应用程序来实现我的许多用例 但我有一个问题 我不知道使用这种方法在片段之间共享视图模型的正确方法是什么 我想共享视图模型 因为我
  • 服务作为 SOA 中的中介

    我知道什么是 通常的 中介设计模式 维基百科中有一些描述 http en wikipedia org wiki Mediator pattern http en wikipedia org wiki Mediator pattern 在我的
  • 在 MVVM 中设置可见性的最佳方法

    In my View我有三个对象 其中一个在任何给定时间都是可见的 在我的Model我有一个枚举来代表这三个状态 我应该如何实施我的ViewModel a 为每个对象的可见性创建一个布尔值 并将每个对象绑定到该布尔值 使用 bool gt
  • 基于另一个组合框的所选项目绑定组合框 - MVVM WPF

    我目前有一个组合框 其中填充了艺术家姓名 一旦选择了艺术家 我需要将其绑定到另一个组合框 在我看来 这些设置如下
  • 策略模式还是命令模式?

    假设我有一个金融交易列表 我需要针对这些交易执行一系列验证规则 一个例子是我有一笔购买产品的交易 但是首先我需要验证交易中的帐户是否有足够的可用资金 产品没有售完等 由于这些规则 交易将是标记为拒绝 并应指定错误代码 当然 我正在考虑用一个
  • 从架构上来说,我应该如何用更易于管理的内容替换非常大的 switch 语句?

    EDIT 1 忘记添加嵌套属性曲线球 UPDATE 我选择了 mtazva 的答案 因为这是我的具体案例的首选解决方案 回想起来 我用一个非常具体的例子提出了一个一般性问题 我相信这最终让每个人 或者也许只是我 对问题到底是什么感到困惑 我
  • 如何使用Jquery获取MS下拉列表的选定值

    我在我的 MVC 项目中使用了 MS 下拉列表 现在我想使用 Jquery 获取 MS 下拉值 如何才能做到这一点呢 Country msDropdown 我想使用 JQuery 获取 INDIA 的选定值 var countryName

随机推荐

  • 我应该使用 ASP:Label 标记吗?

    我正在 ASP NET 中构建一个表单来发送电子邮件 到目前为止 一切进展顺利 我能够将 ASP TextBox 内容传递到电子邮件 没有任何问题 现在 我的做法是将静态文本作为 TB 标签放入 然后使用 TB 控件作为输入 我应该使用 A
  • 无法锁定 DLL 上的 c++ 11 std::mutex [重复]

    这个问题在这里已经有答案了 我试图通过使用 std lock 对象来防止多次调用 DLL 初始化函数 在独立程序上使用这样的程序时 include
  • 对数据集的一部分进行多项式拟合的算法

    我有一个算法问题 我不知道 stackoverflow 是否是发布它的正确位置 但由于我使用 matlab 并且想用它来完成此操作 所以我将其发布在那里 我的问题如下 我有一组数据 除了在这组数据的末尾 这些点必须非常线性之外 我对此了解不
  • 使用 aiohttp 嵌套“异步”

    我想创建一个使用 aiohttp 进行 API 调用的调度程序类 我试过这个 import asyncio import aiohttp class MySession def init self self session None asy
  • TextInputEditText:ArgumentNullException:MvxWeakEventSubscription 中缺少源事件信息

    突然 我的 TextInputEditText 的绑定开始失败 这与链接器有关 如果我将链接器设置为 无 则一切都会按预期进行 我使用的许多其他绑定仍然可以正常工作 我得到的堆栈 视图绑定期间抛出异常 ArgumentNullExcepti
  • 在背景中捕捉图像?

    我试图在不加载相机或预览界面的情况下从相机捕获背景图像 在我的应用程序中 照片是在后台拍摄的 没有预览屏幕 只有普通的应用程序屏幕 然后稍后显示给用户 有人可以指出我正确的方向吗 您必须使用 AVCaptureSession 和 AVCap
  • 访问 RadioButton 并在 Espresso 中选择它

    我正在使用 Espresso 来测试 Android 应用程序 我在尝试找到一种方法来访问和选择当前活动的RadioButton 属于RadioGroup 时遇到麻烦 有没有人有什么建议 给出以下布局
  • 如何处理 mod_rewrite 中查询字符串中的“#”?

    I asked 这个问题 https stackoverflow com questions 1640977 how to redirect old ugly urls to seo friendly ones关于将旧的 丑陋 链接重写为搜
  • Java Servlet/Jsp 图像上传以及表单值[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我有一个 jsp 表单 它接受有关员
  • 全局变量没有全局作用域

    supposedlyGlobalVariable blah ARoutine localVariable asdf MsgBox The global variable value is supposedlyGlobalVariable T
  • 访问 Bamboo 秘密/密码变量?

    我的团队有一些旧的竹子管道 其中秘密和密码在竹子变量中配置 并用竹子掩盖这些值 现在没有人知道密码 也没有记录下来 有什么方法可以访问 打印并查看bamboo 秘密 密码 变量中的值吗 读取秘密变量有一个技巧 创建包含内容的脚本任务 ech
  • 按条件对行进行分组

    我有这个数据 Start End Quantity 425 449 24 450 474 24 475 499 24 500 524 24 2300 2324 24 2400 2499 99 2500 2599 99 2800 2899 9
  • Mongoose:将 addToSet 与 ObjectIds 一起使用会产生孤立 ID

    我在使用 mongoDB addToSet 到一个充满对象 Id 的数组时遇到了一个相当有趣的问题 在我的猫鼬模式 Happening 中 我声明了一个名为 expected 的 ObjecId 数组 供 populate 使用 expec
  • 在 .Net Core 3.1 中使用 NewtonSoft 将 DataTable 转换为 JSON 字符串时,如何获得不带“\u0022”或“\”等字符的 JSON 字符串[重复]

    这个问题在这里已经有答案了 我正在 net core 3 1 中编写一个简单的 API 要将我的 DataTable 转换为 JSON 字符串 我使用 NewtonSoft 库和以下代码 string JSONresult JsonConv
  • 保护 JavaScript Web 应用程序/游戏的方法有哪些?

    背景故事 我计划实现一款休闲游戏 部署在网络应用程序中 但我不想使用 Flash 而只是使用普通的 Javascript 我想要的 Flash 的一个好处是 它分发二进制文件而不是源代码 因此更容易保护您的代码不被其他人重用 窃取 或者防止
  • 如何用 Python 编写 Web 代理

    我正在尝试用 python 编写一个网络代理 目标是访问如下网址 http proxyurl http anothersite com 并查看内容http anothersite com就像平常一样 通过滥用 requests 库 我已经取
  • Excel 一组选项中的随机数

    在 MS Excel 中 如何随机计算一组 5 个选项中的一个数字 例如 在单元格 B1 中 我想要一个随机数 即 15 30 50 75 或 100 我想要在单元格 B1 B100 中完全随机输出这 5 个数字 我想我可以使用 rand
  • Curl 只能读取前 2000 个字节吗?

    我使用了 char URL file d temporal prueba1 txt 的curl 来测试使用硬盘驱动器文件来测试接收到的数据 我有以下问题 跳过大文件中的前 2 个字符 已解决 读取数据时出错 我只想只读一次 最好是前 200
  • 通过命令行在 Chrome 中打开网址而不使用缓存

    我使用命令chrome new window htp www example com 打开一个 url 但页面是使用上次保存在缓存中的打开的 有没有办法从命令行打开 URL 强制加载而忽略缓存 Thanks 尝试以下命令 usr bin g
  • 如何从业务/模型类发送进度更新?

    假设我们有一个具有分层架构的应用程序 在视图上我们使用 MVC 或 MVVM 模型被视为域 它有很好的业务逻辑部分 现在假设我们在模型中有一个需要一些时间的方法 例如 必须对对象的每个项目进行复杂的计算或处理 在 UI 中 我们希望显示一个