用自定义的任务计划程序替换 C# 中的任务计划程序

2023-11-21

我想知道是否可以使用 C# 更改将任务映射到 .NET 中真实操作系统线程的任务调度程序,或者是否需要重新编译 Mono 运行时来执行此操作。谢谢。


系统.线程.任务

如果您参考系统.线程.任务那么你需要的是子类化任务调度器然后你可以使用你的类的对象来初始化任务工厂。有一个example在 MSDN 中。我还找到了一个psyCodeDeveloper 博客中的示例.


线程池

除此之外你可以使用同步上下文处理将任务发布到线程池的方式(使用ThreadPool.QueueUserWorkItem例如)得到处理。

为此,您可能对 CodeProject 的了解 SynchronizationContext 系列感兴趣(part 1, part 2 and part 3).


反应式扩展

至于Reactive Extensions中的自定义调度程序,您还可以使用上面提到的SynchronizationContext,有关更多信息,请查看教程:introtorx.com尤其第 4 部分:并发.


Others

当然可以滚你自己的线程池,尽管不建议这样做。除此之外,您可以手动处理线程 - 老方法。

处理任务的其他方法包括使用定时器进行调度并有专用的线程来完成工作。


作为塞拉奥特图书馆你会发现班级Work它基于无锁队列,可以配置为具有任意数量的专用线程,等待任务的线程也贡献其时间来执行任务,任何额外的工作都委托给线程池。这是将 System.Threading.Tasks 向后移植到 .NET 2.0 的持续努力的一部分。

In 塞拉奥特图书馆Work 类已经消失有一段时间了,部分向后移植System.Threading.Tasks.NET 2.0 提供了对自定义 TaskScheduler 的支持。

全面披露:正如缺乏想象力的名称所暗示的那样,我是威胁库的作者。抱歉缺少文档,我愿意在使用库的任何方面提供帮助。请报告任何错误,我目前(2013-06-26)在主分支中没有已知的错误。

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

用自定义的任务计划程序替换 C# 中的任务计划程序 的相关文章

随机推荐

  • 将 Microsoft SQL 复制到其他数据库

    我希望能够将整个数据库从 Microsoft SQL 复制到另一个 Web 友好的数据库 例如 CouchDB 甚至 mySQL 我需要每天进行复制 只是想知道是否可能 如果可以 我将如何用最少的编码来完成它 Thanks 这是可能的对称D
  • 在网页上查找广告

    我正在编写一个应用程序 试图确定页面上是否有广告 当前正在使用 python 通过 selenium webdriver 使用浏览器驱动 我认为 iframe 内存在大量广告 并且我制作了一个循环来查看每个框架的内部 browser web
  • AngularJS 中用于分页的限制和偏移数据结果

    AngularJS在调用支持Limit和Offset的外部数据资源时是否有Limit和Offset请求方法 我想有一个比这更优雅的解决方案 我通过路线参数传递限制和偏移量 function ListCtrl scope http route
  • ExecCommand 函数的定义是否为粗体?

    ExecCommand 提供了一种在 iFrame 中将文本加粗 斜体 下划线等的方法 但它缺少创建选项
  • Flask WTF“StringField”对象没有属性“translate”

    我对 Python 比较陌生 并且一直在关注Miguel Grinberg Flask 超级教程 我有一个非常简单的表单 当我尝试提交时 我收到以下错误 AttributeError StringField 对象没有属性 translate
  • Postgresql join_collapse_limit 和查询规划的时间

    我刚刚发现join collapse limit一直在阻止 PostgreSQL 规划器找到更好的连接顺序 就我而言 将限制增加到 10 默认为 8 允许规划器将搜索时间从约 30 秒缩短到约 1 毫秒 这是更容易接受的 该文档表明 设置此
  • 如何使用 Electron 运行和打包外部可执行文件?

    例如 我有一个编译好的二进制文件cudaDeviceQuery它以 JSON 形式返回设备列表 这是一段代码 export default function cudaDeviceQuery Promise
  • Laravel 对所有页面进行身份验证检查

    我已经创建了身份验证 并且它运行良好 但检查内页时存在一些问题 例如 Route get array before gt auth do gt function return View make home index 索引页面仅对登录用户可
  • 从手机号码中提取国家代码

    我有一个带有国家 地区代码的手机号码列表 例如 919638095998 号码 我已经提到了libphonenumber 谷歌示例另外 首先我们需要传递国家 地区 2 位数代码 我最初不知道 那么我怎么知道这个号码来自哪个国家呢 我还得到了
  • CouchDB读取授权

    在couchdb网站 gt 技术概述 gt 安全性和验证 http couchdb apache org docs overview html 它写道 在读者访问 部分 为了保护文档内容 CouchDB文档可以有一个读者列表 这是允许阅读文
  • Angular ui-router 完成条件视图

    我正在问一个与这个问题类似的问题 UI 路由器条件 ui 视图 但我的情况有点复杂 我似乎无法得到所提供的工作答案 基本上 我有一个 url 可以用两种截然不同的方式呈现 具体取决于 url 指向的实体类型 这是我目前正在尝试的 state
  • 鼠标中键按下并移动事件

    是什么控制事件鼠标中键按下并移动 也就是说 当我按住鼠标中键并移动鼠标时 我可以订阅什么事件 看一下 Control MouseDown 事件 鼠标按钮枚举 在 C 中检测鼠标按钮事件 你也可以尝试这样的事情 private void Fo
  • 使用 Redis 的 Mule 缓存策略

    我正在寻找一种在两台服务器之间共享缓存的方法 并且正在研究使用 Redis 作为对象存储缓存策略 但在读取存储值时遇到问题 当缓存命中为未命中值时 它会成功存储值 但在检索该值时会抛出错误 所需的对象 属性 muleContext 为 nu
  • 如何在 ext 4 中制作完整的模式窗口?

    就像微软操作系统 xp vista 7 等 中的窗口一样 如果主窗口创建模态窗口 则用户无法访问主窗口 包括关闭和访问工具栏等 我想用 extjs 做一个类似的 这是我的模态示例 Ext create Ext Window title aa
  • 类型存在于 2 个程序集中

    我从两个不同的第三方 COM DLL 创建了两个 NET Interop 程序集 这两个 COM DLL 都包含一个名为COMMONTYPE 所以 COMMONTYPE现在也通过两个互操作程序集公开 我有第三个项目需要使用这两个互操作程序集
  • jce 无法验证提供者 bc

    我开发了一个应用程序 在 BountyCastle jar 的帮助下使用了密码学 我还有一行 Security addProvider new org bouncycastle jce provider BouncyCastleProvid
  • 在两个无序字符向量之间执行非成对的全部比较 --- intersect 的相反 --- 全部到全部 setdiff

    示例数据 v1 lt c E82391 X2329323 C239923 E1211 N23932 F93249232 X93201 X9023111 O92311 9000F K9232932 L9232932 X02311111 v2
  • Object类如何实现clone()方法

    在一本关于 Core Java 的书中 我发现了这样的摘录 想想以何种方式 对象类可以实现克隆 它 对物体一无所知 所以它只能逐个字段 复制 如果对象中的所有数据字段 是数字或其他基本类型 复制字段就可以了 但 如果该对象包含对 子对象 然
  • 在调用超类构造函数之前验证构造函数的参数

    例如 这样的构造函数 public class Car extends Vehicle public Car Car a super a getName what if a is null 在调用 super 之前我无法检查参数的条件 在这
  • 用自定义的任务计划程序替换 C# 中的任务计划程序

    我想知道是否可以使用 C 更改将任务映射到 NET 中真实操作系统线程的任务调度程序 或者是否需要重新编译 Mono 运行时来执行此操作 谢谢 系统 线程 任务 如果您参考系统 线程 任务那么你需要的是子类化任务调度器然后你可以使用你的类的