调度程序如何在线程中工作?

2024-05-25

我们有一个使用调度程序的 silverlight 应用程序,如果我能帮助解释以下代码的作用,我将不胜感激。 (不幸的是编写代码的开发人员已经离开)。

所以我们有以下内容:

public class ABC
{
    private Dispatcher dispatcher;
    private Thread threadRunner;

    public void ABC()
    {
       threadRunner= new Thread(ThreadRunnerMethod)
                         {
                           IsBackground = true, 
                           ApartmentState = ApartmentState.STA
                         };
       threadRunner.Start();
    }

    private static void ThreadRunnerMethod()
    {
       Dispatcher.Run();
    }


    public void MainMethod()
    {
       dispatcher = Dispatcher.FromThread(threadRunner);
       dispatcher.Invoke(new Action(() => 
                                     // "DO SOME WORK WITH A COM OBJECT"
                                      ));

    }
}

我对线程有一些基本经验,但我不知道这一切是如何工作的?

JD


基本上,它相当于 Windows 窗体中的 Control.Invoke - 它只是被分离成自己的对象。

据我了解,Dispatcher.Run基本上会启动一个事件循环,您可以使用以下命令将调用编组到该事件循环中Dispatcher.Invoke. Dispatcher.FromThread找到Dispatcher负责给定线程的对象 - 因此在这种情况下,它会找到在新线程中运行的事件循环。

因此,在您的代码中,使用 lambda 表达式创建的委托将在新创建的线程中执行。

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

调度程序如何在线程中工作? 的相关文章

随机推荐

  • 想要并行运行非线程安全库 - 可以使用多个类加载器来完成吗?

    我从事的一个项目中 我们使用的库不能保证线程安全 实际上也不是 并且在 Java 8 流场景中是单线程的 它按预期工作 我们希望使用并行流来获得容易实现的可扩展性成果 不幸的是 这会导致库失败 很可能是因为一个实例干扰与另一实例共享的变量
  • 使用 VBA 将数据从 Excel 导出到现有 PowerPoint 幻灯片

    我正在编写一个小型 excel 插件来进行一些简单的数据分析 但不幸的是我不是 VBA 程序员 到目前为止我已经做了什么 从巨大的 Excel 工作簿中获取数据并执行计算 将结果写入预先格式化的 Excel 骨架 文件 我接下来想要做什么
  • 即使不改变对象和数组,也无法更改减速器中的嵌套对象

    我正在尝试更新减速器内的状态 我知道我不应该改变对象或嵌套对象 所以我使用map用于数组或对象的对象扩展 但似乎我无法真正更改深层嵌套的值 除了我无法更改状态这一事实之外 我真的不喜欢代码的外观 尤其是仅更改一个属性所需执行的循环数量 我觉
  • 如何在winform的中心设置控件?

    您好 我正在尝试在表单中心设置控件 即标签或文本框 当我最大化该形式时我需要这个 我可以静态或动态设置它吗 大家有什么想法请尽快告诉我 将控件放在中心并设置Anchor财产给None
  • 单元测试魔术方法

    当涉及到 PHP 中魔术方法的单元测试实现时 调用这些方法的推荐方法是什么 我看到三个可用选项 显式 直接调用它们 object gt get someValue 间接调用它们 使用任何旨在触发它们的操作 object gt someVal
  • 命令行字符串的最大长度

    在Windows中 命令行字符串的最大长度是多少 意思是如果我指定一个在命令行上接受参数的程序 例如abc exe name abc 我编写的一个简单的控制台应用程序通过命令行获取参数 我想知道最大允许数量是多少 来自微软文档 命令提示符
  • 能够在 WPF 网络浏览器中支持 Html5

    我的WPF浏览器不支持网页上的html5元素 我不知道如何实现对它的支持 我确实安装了 IE9 并且可以看到使用 IE 浏览的 html5 元素 非常感谢任何关于如何添加对 html5 支持的帮助 我实际上自己找到了解决方案 一切都在这个页
  • Web 应用程序架构 - 需要作业/任务队列吗?

    我目前正在设计一个 Web 应用程序 该应用程序将允许用户安排将针对 HTTP API 代表他们 执行的任务 这些任务可以重复出现 并且可用于调度的最小时间分辨率为一分钟 由于任务的性质 我认为异步执行它们是有意义的 但是 这部分的架构应该
  • 如何将一个div的内容克隆到另一个div

    我想使用jquery克隆将选定div的内容复制到另一个div 但我不想将它附加到任何地方 我的意思是 当我们用 jquery 克隆一个 div 时 如果我错了 请纠正我 我们必须设置它的位置 它将动态创建一个显示的新分区 但我想获取所选di
  • 在 powershell 3 中美化 json

    给定一个标准 json 字符串值 jsonString baz quuz cow moo cud foo bar 我怎样才能让这一切都漂亮的换行符 最好没有强力正则表达式 到目前为止我发现的最简单的方法是 jsonString Conver
  • Monitor.TryEnter(object) 和 Monitor.TryEnter(object, ref bool) 之间存在什么重要区别?

    这些代码片段的行为似乎应该相同 1 Monitor TryEnter 对象 if Monitor TryEnter lockObject try DoSomething finally Monitor Exit lockObject 2 M
  • 秋千布局:垂直流

    我应该使用什么 LayoutManager 来实现 FlowLayout 的转置版本 本质上 我想要一个垂直列表 如果它不能在一列中容纳所有组件 那么它会占据多列 item 1 item 2 item 3 item 4 item 5 ite
  • Java获取调用页面的URL

    为了让您了解情况 我们使用基于 Tomcat 6 0 29 的自定义服务器 我们正在使用 Java 和 Spring 进行开发 假设我有一个链接 您可以从http localhost 显示 http localhost display to
  • 将 HTML 导出为 PDF 时出现中文和日文字符编码问题

    我运行一个基于 Web 的时间线制作工具 让用户可以用 HTML JavaScript 创建时间线 然后将其导出到 PDF 文件以便在完成后进行打印 我有几个用户报告了当时间线包含某些 Unicode 字符时将时间线导出为 PDF 时出现的
  • Webrtc 重新协商,Firefox 到 Chrome,反之亦然,不更新流

    我已经成功建立对等连接 但我无法在 Chrome Firefox 上进行正确的重新协商 我已按照重新协商的步骤 将相机 视频更改为屏幕共享时 更新流 曲目 添加 删除 Changer 这击中了需要谈判 改变者 创建报价 更改者 设置本地描述
  • 在S3客户端android中制作私有图像的ImageGallery

    我正在尝试在 Android 应用程序中创建 S3 Bucket 的 imageGallery 我的图像是私人的 所以我不会为每个图像提供任何特定的链接 对于此类私人图像 亚马逊有一个链接生成器 s3Client generatePresi
  • 在 Ruby 中将多个代码块作为参数传递

    我有一个需要代码块的方法 def opportunity opportunities 1 if yield performances 1 end end 我这样称呼它 opportunity some array empty 但是我如何传递
  • “威胁已经被清除了。”在测试中测试在后台线程上触发委托的代码

    我有一些旧代码正在尝试为其编写测试 该代码解析日志文件 在后台线程上 完成后触发传入的委托 i e public delegate void finread LogData l LRParseState l string e void Th
  • 处理 C++ 类中的惰性计算

    假设我有一堂课 class NumberCollection public typedef std set
  • 调度程序如何在线程中工作?

    我们有一个使用调度程序的 silverlight 应用程序 如果我能帮助解释以下代码的作用 我将不胜感激 不幸的是编写代码的开发人员已经离开 所以我们有以下内容 public class ABC private Dispatcher dis