加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

.net – 任务并行库周围是否有一个接口包装器,以便我可以将其换

发布时间:2020-12-20 11:14:54 所属栏目:Python 来源:网络整理
导读:我刚才问了 this question.我现在知道这是一个坏主意,并且应该抽象封装任务的调度和运行,以便可以从单元测试中传入同步调度程序. 我目前有使用Task Parallel Library(TPL)的代码,我想在我的类型中注入类似ITaskScheduler的内容,以提取调度的责任,并使我能够
我刚才问了 this question.我现在知道这是一个坏主意,并且应该抽象封装任务的调度和运行,以便可以从单元测试中传入同步调度程序.

我目前有使用Task Parallel Library(TPL)的代码,我想在我的类型中注入类似ITaskScheduler的内容,以提取调度的责任,并使我能够在测试中传递同步替代方案.

这样的事情存在吗?我正在寻找包装Task.Factory.StartNew和Task.ContinueWith的东西.我不认为自己卷起来不是太多的工作,但我确信有很多小问题,如果有一个已经可用,我真的不想花时间去做.

解决方法

替换Task类很难,即使你从Task继承了一个新类:因为TaskScheduler和TaskFactory在Task上不是通用的,所以它根本没用.

根据我的经验,更好的方法是使用您自己的TaskScheduler类(继承自TaskScheduler).您可以将它传递给TaskFactory构造函数,然后在整个过程中使用该TaskFactory.

现在进行测试,您可以使用具有不同并行度的不同TaskScheduler(如果需要,可以使用最少1个线程),并且可以在TaskScheduler类中添加额外的日志记录,以便在每个任务启动和完成时记录它们.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读