WPF 调度程序、后台工作人员和很多痛苦

2024-01-12

好吧,这可能真的很简单,但我尝试的一切似乎都碰壁了。

我有一个具有两个属性的视图模型,它们绑定到我的 WPF 表单:

 bool IsWorking {get;set;}
 ObservableCollection<OtherViewModel> PendingItems {get;set;}

我有一个方法可以从 Outlook 中获取一些新的待处理项目,但是我也可以在表单上显示某种进度(旋转进度条),进度条可见性绑定到 ViewModel 上的 IsWorking 属性,并且网格绑定到 PendingItems 集合。

我希望能够将 IsWorking 设置为 true,以便 UI 可以显示进度条,在后台运行工作,然后在完成后将 IsWorking 设置为 false,以便进度条消失。

我创建了一个像这样的后台工作者:

        worker = new BackgroundWorker();
        worker.DoWork += new DoWorkEventHandler(worker_DoWork);
        worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(worker_RunWorkerCompleted);
        worker.RunWorkerAsync();

现在,worker_DoWork 调用获取挂起项目并将其添加到 PendingItems 集合中的方法,所有内容都在后台运行,UI 仍然响应,但在尝试添加到集合时出现正常的交叉线程错误。我将更改集合的代码包装在调度程序调用中:

        // Update to show the status dialog.
        Dispatcher.CurrentDispatcher.Invoke(DispatcherPriority.Render,
                            new Action(delegate()
                            {
                                this.PendingItems.Add(\\Blah);
                            })
                          );

但它仍然引发相同的跨线程错误。

我不太擅长线程,所以我不知道我可能做错了什么,有人可以帮我解决这个问题吗?


看一看here http://sachabarbs.wordpress.com/2009/01/31/threadsafeobservablecollectiont/有关其他人如何创建线程安全的可观察集合的信息(因此您不必这样做)。

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

WPF 调度程序、后台工作人员和很多痛苦 的相关文章

  • 如何检索 ComboBox 选定的值作为枚举类型?

    这是我的Enum code public enum EmployeeType Manager Worker 我将初始化ComboBox值 而表单将自身初始化为 combobox1 ItemsSource Enum GetValues typ
  • 当 DataTable 为空时,DataGrid 显示空行

    我有一个DataGrid dg1 绑定到DataTable 数据集 表 代码运行良好并且DataGrid正在显示数据DataTable正确 但是 如果我Clear the DataTable the DataGrid也很清楚 但留下一个空行
  • 如何更改每个 DataGrid 行详细信息的行详细信息的 DataTemplate 中的 TextBlock 的文本?

    我有 Datagrid 通过鼠标在每一行中单击显示数据网格行详细信息 这是代码 Microsoft Windows Controls DataGridRow row Microsoft Windows Controls DataGridRo
  • JFrame 在连续运行代码时冻结

    我在使用时遇到问题JFrame 它会冻结 连续运行代码 下面是我的代码 点击时btnRun 我调用了该函数MainLoop ActionListener btnRun Click new ActionListener Override pu
  • 多线程 - 比单线程慢

    当我使用多个线程而不是单线程运行程序时 它会变慢 不是应该更快吗 该程序应该遍历从起始目录开始的所有目录 并查找并打印所有名为 X 的文件 代码如下 while done pthread mutex lock lock if list is
  • XCode std::thread C++

    对于学校的一个小项目 我需要创建一个简单的客户端 服务器结构 它将在路由器上运行 使用 openWRT 并且我试图在这个应用程序中使用线程做一些事情 我的 C 技能非常有限 所以我在internet https stackoverflow
  • 如何获取运行或段落的高度

    我找到了Run or Paragraph in FlowDocument现在我需要知道HEIGHT of it i e while navigator CompareTo flowDocViewer Document ContentEnd
  • WPF C# 输入框

    我正在使用 C 构建 WPF 应用程序 我想弹出一个对话框提示用户输入他 她的名字 之后 我将跟踪该名称并将一些数据保存到 txt使用该名称的文件 例如 输入的名称是姓名 约翰 所以我有数据数据 1 2 3 然后我将 数据 保存在John
  • ListView:在资源字典中定义ItemsPanelTemplate

    我有一个 ListView 其布局看起来像 Windows 资源管理器视图 图标 一些详细信息 绑定到 ViewModel 中某处的列表 我的目标是能够随时在资源管理器视图或经典视图之间切换 我可以定义一个ItemsPanelTemplat
  • 多线程 Web 应用程序

    我知道有很多情况都是在应用程序中使用多线程的好例子 但是什么时候最好在 net Web 应用程序中使用多线程 Web 应用程序几乎肯定已经由托管环境 IIS 等 实现多线程化 如果您的页面受 CPU 限制 并且想要使用多个核心 那么可以说多
  • 将快速文本输入发送到另一个进程(窗口)

    我正在编写一个 C WPF 程序 它将文本消息发送到另一个程序的窗口 我有一个宏程序作为我的键盘驱动程序 Logitech g15 的一部分 它已经做到了这一点 尽管它不会将击键直接发送到进程 而是发送到当前聚焦的窗口 它运行良好 但我也需
  • 如何将 WPF 3.0 下构建的应用程序转换为 4.5 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我在 WPF 3 0 中构建了一个应
  • 已发布的 .Net Core 应用程序警告安装 .Net Core,但它已安装

    我制作了一个 WPF 和控制台应用程序 供某人在我无法访问的私人服务器上使用 我使用 Visual Studio 2019 的内置 发布向导 来创建依赖于框架的单文件应用程序 当该人打开 WPF 应用程序时 他们会看到标准警告 他们单击 是
  • 异步调用的任务限制?

    我有一个同步工作的 NET 4 5 WCF 客户端 我正在更新它以使用新的异步 等待功能来进行多个同时服务器调用以同时获取数据块 在结束之前 我担心同时运行的所有线程将使服务器饱和 更不用说明年升级到该角色时会终止我的 Azure 辅助角色
  • 如何为每个线程自动全局初始化/取消初始化某些内容?

    我有一个单位initialization and finalization部分 该单元包含一个复杂的对象 该对象在initialization并毁于finalization 但是 该对象还包含一个 ADO 连接 这使得跨线程使用它时出现问题
  • WPF Treeview,如何更改缩进

    我的树视图基本上有 文件夹 节点 以及不包含其他项目的项目下面的一层 因此 不需要用于展开 折叠图标的空间 在第 2 层 我可以放弃这个图标空间从而减少缩进吗 项目 在示例 机场 中 应向左移动一些像素 重要提示 基本上是寻找代码解决方案
  • Qt:关闭期间线程仍在运行时 qthread 被销毁

    我有一堂课 class centralDataPool public QObject Q OBJECT public centralDataPool QObject parent 0 centralDataPool commMonitor
  • C# - WPF - 组合框 - 将鼠标悬停在聚焦的组合框上时防止滚动(使用附加属性)

    背景 我需要防止ComboBox从将鼠标悬停在其上 聚焦时 时滚动和使用鼠标滚轮滚动 在这种情况下 我无法使用隐藏代码 因此我使用附加属性 我刚问这个问题 https stackoverflow com questions 76101509
  • 什么是WPF浏览器应用程序类型项目?

    什么时候应该使用 WPF 浏览器应用程序 该项目类型有什么用处 开发人员什么时候应该使用这个 WPF 浏览器应用程序是在浏览器中作为 XBAP Xaml 浏览器应用程序 运行的应用程序 您可以找到有关 XBAP 的用途和原因的更多信息her
  • 如何使 ScheduledExecutorService 在计划任务取消时自动终止

    我正在使用一个ScheduledExecutorService如果网络连接已打开超过几个小时 则关闭该连接 然而 在大多数情况下 网络连接在超时之前就关闭了 所以我取消了ScheduledFuture 在这种情况下 我还希望执行程序服务终止

随机推荐

  • PHPExcel 导出不起作用:显示“无法访问该网站”

    我已经从服务器克隆了一个项目并安装在我的本地设置中 我正在尝试使用 PHPExcel 将 Excel 文件导出到浏览器 它在服务器中运行良好 但是本地设置有问题 我还检查了列和字段的数量 它们都很好 下面是代码
  • Rails gem Ransack -> 使用“is null”和特定值搜索“或条件”(field=x OR field IS NULL)

    我为我们的支持者制作了一个支持票系统 使用 ruby on Rails 进行编程 Ruby 1 9 3 Rails 3 2 有一个票证模型belongs to与用户 支持者 的关联 我使用 Ernie 的 gem Ransack 进行搜索
  • Intellij 尝试将 pom.xml 视为 jar 文件

    在尝试从 Intellij 运行测试 在 Maven 项目上 时 我不断收到下面提到的错误 my module Exception in parsing jar file for extract from jar path to pom x
  • WooCommerce:按产品类别划分的自定义购物车项目计数

    I found 这个脚本 https docs woothemes com document show cart contents total 这允许我在 WooCommerce 中的购物车图标上方显示购物车内容总数 a class car
  • 在 Windows 上使用 C++ 获取当前用户名

    我正在尝试创建一个程序 使用 C 在 Windows 上检索当前用户的用户名 我试过这个 char userName getenv LOGNAME stringstream ss string userNameString ss lt lt
  • 无法缩进 UITableViewCell 子类

    我对 UITableViewCell 进行了子类化 以创建带有一个按钮和 2 个标签的自定义单元格 使用 Dave Mark 的 Beginning iPhone Development 中概述的模式从 xib 加载单元格定义 这是基本代码
  • Entity Framework Core 是否支持 Union?

    我正在尝试使用 union 查询 EF Core 中的多个表 如下所示 但它不允许 请找到该查询 并附上 net core框架提供的错误提示上的图像 var query context Brand Select x gt new Brand
  • SWT 日期时间格式更改

    我正在使用 DateTime SWT 组件 它在显示时具有美国格式 mm dd yyyy 有什么方法可以将格式更改为 dd mm yyyy 吗 DateTime uses http dev eclipse org mhonarc lists
  • 使用 XPath 选择命名空间中的元素

    我想选择具有给定命名空间 前缀 的文档中最顶层的元素 更具体地说 我的 XML 文档要么以 html body 在 XHTML 命名空间中 开头 要么以特定命名空间中的多个元素之一开头 我实际上想删除 html body 并只返回正文内容或
  • jQuery 自动完成,将成功数据传递给 select 方法

    我有 json 响应 它有一些属性 我已经为列表创建了一个数组 当我单击列表项时 一些输入将由项目 ID 填充 为此 我正在考虑将完整的数据对象传递给 select 方法 然后如果单击列表中的某个项目 我将在数据对象中搜索 id 如果找到
  • beans 和 Jackson 库的问题

    HI 我正在使用 json 文件 如下所示 SourceFile videos KobeAlleyOop flv ExifTool ExifToolVersion 8 22 Warning Truncated mdat data Syste
  • 星号 (*) 在 VSCodestasks.json 中不起作用

    当我尝试运行具有多个模块的 C 项目时 它默认只编译选定的模块 我尝试编辑tasks json来编译文件夹中的每个C和头文件 但它只是将星号作为星号传递到我的命令行 我编辑了tasks json并尝试使用以下输出构建项目 Starting
  • Kotlin 的具体化类型对于 JVM 上的原语是否不正确?

    如果 Kotlin 函数调用具体化了一个原语 比如说Int 通过 类是装箱原语的类 而不是未装箱版本的类 inline fun
  • 使用 GCC 语句表达式的匿名函数

    这个问题并不是很具体 这确实是为了丰富我自己的 C 语言 我希望其他人也能发现它很有用 免责声明 我知道很多人都会有这样的冲动 如果你想尝试函数式编程 那么就使用函数式语言 我在需要链接到许多其他 C 库的嵌入式环境中工作 并且没有太多空间
  • 如何在不打补丁的情况下本地化Python的argparse模块?

    当消息的某些部分是用户语言而其他部分是英语时 本地化的命令行应用程序看起来很奇怪 我不知道当我从源代码安装 Python 3 时是否搞砸了任何东西 似乎没有 mo文件 所以argparse 总体而言 没有本地化意识 API 似乎也没有提供本
  • 如何在 Android 的 SD 卡中设置代理自动配置 (PAC) 文件

    打扰一下 我使用以下命令将文件 proxy pac 推送到 SD 卡 adb push C Users zuokang li Documents proxy pac sdcard 我尝试在 android 中设置代理自动配置 所以我设置了
  • 在 Python 中循环 Protocol Buffers 属性

    我想要帮助递归地循环协议缓冲区消息中包含的所有属性 子对象 假设我们不知道它们的名称 或者有多少个 作为示例 请从 google 网站上的教程中获取以下 proto 文件 message Person required string nam
  • Matplotlib Xticks 条形图中的值

    我有这段代码 我正在尝试制作一个图表 列表中的所有值都是正确的 但是 我在 x 轴上遇到问题 首先 前两个价格变动之间存在差距 我阅读了他们网站上的所有 matplotlib 但找不到任何对这个问题有用的东西 我对 xticks 函数很困惑
  • Powershell 3.0:“获取音量”的替代方案

    我正在尝试获取计算机上每个硬盘卷的各种属性 我正在使用 cmdletget volume然后通过它走过foreach 但 Windows Server 2008 中不存在该 cmdlet 有人知道替代方案吗 我只需要驱动器号 objectI
  • WPF 调度程序、后台工作人员和很多痛苦

    好吧 这可能真的很简单 但我尝试的一切似乎都碰壁了 我有一个具有两个属性的视图模型 它们绑定到我的 WPF 表单 bool IsWorking get set ObservableCollection