有人知道使用 .NET 4.0 任务进行并行编程模式/测试的好资源吗?

2024-03-18

我最近要求一位开发人员使用 .NET 4.0 的新多线程功能编写一个库。

他做得很好,但我担心任务逻辑在整个代码中重复并且没有很好地封装。

我还担心这会在测试时产生问题。通常,我通过创建一个接口和一个存根/模拟对象来运行测试,从而在代码中创建一个接缝来进行测试。

我想使用这种做事方式是可能的。看起来生产代码逻辑与测试逻辑有很大不同。

解决方案是否也可以进行并行测试,并且只需重复其中的任务逻辑?或者人们是否想出了可以封装大部分任务处理逻辑以便于复制的模式?

Thanks!

Task task = Task.Factory.StartNew(() =>
        {
            if(cancellationToken.IsCancellationRequested)
            {
                throw new OperationCanceledException();
            }

            if (_bookHeader.EncryptionType != 0)
            {
                throw new MobiException("The book is encrypted");
            }

            ExtractText();

            partReady(66.66f);
        }, cancellationToken);

        Task opfTask = task.ContinueWith(antecedent =>
            {
                if (antecedent.Status != TaskStatus.Canceled)
                {
                    OpfDocument opf = CreateOpf();

                    partReady(80);

                    MobiDocument book = new MobiDocument()
                    {
                        Contents = _mobiHtml,
                        Description = opf,
                        Header = _bookHeader,
                        Sections = _sections
                    };
                    Document = book;


                    GC.Collect();

                    partReady(100);
                }
            });             

        return opfTask;
    }

并行编程模式:使用 .NET Framework 4 理解和应用并行模式 https://www.microsoft.com/en-us/download/details.aspx?id=19222

更新了并行编程示例 https://web.archive.org/web/20160324132407/http://blogs.msdn.com/b/pfxteam/archive/2009/12/06/9933262.aspx

.NET 4 并行编程示例概览 https://web.archive.org/web/20160322121047/http://blogs.msdn.com/b/pfxteam/archive/2009/12/09/9934811.aspx

使用 .NET 进行并行编程 https://devblogs.microsoft.com/pfxteam/

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

有人知道使用 .NET 4.0 任务进行并行编程模式/测试的好资源吗? 的相关文章

  • 从另一个线程调用 show 后 Windows 窗体窗体挂起

    我的应用程序有一些异步运行的网络代码 我附加了一些在没有连接到服务器时抛出的事件 并且在发生这种情况时我正在创建一些 操作失败 表单 问题是我的表单在创建后挂起 我读到了相关内容 并尝试这样做 public void ShowView if
  • C:如果文件描述符被删除,阻塞读取应该返回

    我正在以阻塞的方式从设备 文件描述符中读取 可能会发生这样的情况 在不同的线程中 设备被关闭并且文件描述符被删除 不幸的是 读取没有返回或注意到并且一直阻塞 作为一种解决方法 我可以使用 select 作为超时来执行 while 循环 如果
  • 生成多个随机数

    我想生成 25 个唯一的随机数并将它们列在控制台中 数字的长度应至少为 10 个字符 有什么简单的方法可以做到这一点吗 尝试将数字构建为字符串 并使用 HashSet 确保它们是唯一的 Random random new Random Ha
  • .NET 线程 - HttpWebRequest BeginGetResponse + AutoResetEvent

    我想知道这两种方法中哪种方法更好实施 我需要创建一个持续时间在 200 毫秒到 5 秒之间的 Web 请求 我需要 html 响应才能继续 因此需要在主线程上阻塞 第一种方法 string GetResponse HttpWebReques
  • 从另一个线程在主线程中运行代码

    在 android 服务中 我创建了线程来执行一些后台任务 我遇到一种情况 线程需要在主线程消息队列上发布某些任务 例如Runnable 有没有办法得到Handler主线程和帖子的Message Runnable从我的另一个线程到它 注意
  • MEF零件配置,存放在哪里?

    In ASP NET NET 4 0 MEF 我将所有部件放在一个文件夹中并使用导入它们DirectoryCatalog 一切安好 部分部件有相关配置 我不想把它们放进去web config 也许一个好的方法是config文件就在带有 co
  • C++11:atomic::compare_exchange_weak 是否支持非原始类型?

    我有以下代码 include
  • Device.BeginInvokeOnMainThread 的用途是什么?

    我希望有人向我解释什么是 Device BeginInvokeOnMainThread 以及它的用途是什么 还有一些使用案例的示例 只是添加一个例子 假设你有一个异步方法DoAnyWorkAsync如果你这样称呼它 仅作为示例 DoAnyW
  • 在 Linux 上创建线程与进程的开销

    我试图回答在 python 中创建线程与进程有多少开销的问题 我修改了类似问题的代码 该问题基本上运行一个带有两个线程的函数 然后运行带有两个进程的相同函数并报告时间 import time sys NUM RANGE 100000000
  • .NET 4.0 代码可以与 .NET 2.0 代码互操作吗?

    NET 4 0 程序集调用 NET 2 0 程序集中的代码是否存在兼容性障碍 反之亦然 更具体地说 我正在研究在使用基于 NET 2 0 的第三方应用程序时升级到 Visual Studio 2010 该应用程序可通过引用我的自定义代码的挂
  • Webworker-threads:在工作线程中使用“require”可以吗?

    使用 Sails js 我正在测试 webworker threads https www npmjs com package webworker threads https www npmjs com package webworker
  • 从辅助线程重定向标准输出(使用函数而不是类进行多线程?)

    我正在努力让我的stdout显示在QTextEdit通过 Qt Designer PyQt5 制作 实际上我让它工作了 但它并没有在制作的同时显示信息 相反 它会等待进程完全结束 然后才会立即显示所有信息 我知道这应该通过线程来解决 也自Q
  • .NET 4.0 构建服务器引用程序集警告 MSB3644 [重复]

    这个问题在这里已经有答案了 我的构建服务器上出现了一堆错误 C WINDOWS Microsoft NET Framework v4 0 30319 Microsoft Common targets 847 9 警告MSB3644 找不到框
  • Time 方法在另一个线程中执行并在超时时中止

    您好 我正在尝试异步运行方法 以便计算持续时间并在超过超时时取消该方法 我尝试使用异步和等待来实现这一点 但没有运气 也许我过度设计了这个 任何输入都会受到赞赏 应该注意的是 我无法更改接口 TheirInterface 因此得名 到目前为
  • 如何让node.js中的线程休眠而不影响其他线程?

    As per 了解 Node js 事件循环 http blog mixu net 2011 02 01 understanding the node js event loop node js支持单线程模型 这意味着如果我向 Node j
  • JFrame 在连续运行代码时冻结

    我在使用时遇到问题JFrame 它会冻结 连续运行代码 下面是我的代码 点击时btnRun 我调用了该函数MainLoop ActionListener btnRun Click new ActionListener Override pu
  • 线程安全的有限大小队列,不使用锁

    我正在尝试编写一个主题队列 但遇到死锁和其他多线程问题 我想用Interlocked CompareExchange避免lock用法 但这段代码并没有按预期工作 它只是擦除整个队列 我在这里做错了什么 public class FixedS
  • C# 为所有对象订阅相同的事件处理程序是线程安全的吗

    我的项目中有一种情况 我连接到多个服务器并监听事件 每当从服务器接收到事件时 Handler 就应该将该事件添加到公共队列中进行处理 所有连接都应将接收到的事件添加到队列中 foreach var item in collection Co
  • java中的负载均衡线程池的种类

    我正在寻找一个负载平衡的线程池 到目前为止还没有成功 不确定负载平衡是否是正确的措辞 让我解释一下我试图实现的目标 第1部分 我有 Jobs 有 8 到 10 个单一任务 在 6 核 CPU 上 我让 8 个线程并行处理此任务 这似乎提供了
  • 依赖于不同队列上的另一个操作的 NSOperation 无法启动

    我有操作的依赖图 并且使用多个队列来组织各种操作流 例如 peopleQueue sitesQueue sessionQueue sessionQueue loginOp fetchUpdatedAccountOp peopleQueue

随机推荐