我最近要求一位开发人员使用 .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(使用前将#替换为@)