【发布时间】:2013-05-11 17:19:37
【问题描述】:
使用 NDepend,我们如何从依赖矩阵中删除由于任务 (TPL) 而由编译器生成的循环依赖。
如果我们不能删除它们,那么我们如何轻松地将它们与需要我们注意的重要循环依赖区分开来。
在处理编译器生成的循环依赖方面是否有任何最佳实践?
编辑:
编译器生成的依赖循环可以在图的左上角观察到
生成依赖循环的代码(在 .Net 4.0 中编译)
*logger 是我班级中的一个字段
private void WriteJsonFileToDiskAsync(string filePath, string json)
{
Task.Factory.StartNew(() => WriteJsonFileToDisk(filePath, json))
.ContinueWith(HandleWriteException);
}
private void WriteJsonFileToDisk(string filePath, string json)
{
Stream fileStream = null;
try
{
fileStream = File.Create(filePath);
using (var writer = new StreamWriter(fileStream))
{
fileStream = null;
writer.Write(json);
}
logger.InfoIfDebuggerIsAttached(string.Format(CultureInfo.InvariantCulture, "Persisted file: {0}", filePath));
}
finally
{
if (fileStream != null)
fileStream.Dispose();
}
}
private static void HandleWriteException(Task task)
{
if (task.IsFaulted)
{
//TODO: Handle Exception
}
}
【问题讨论】:
-
您的问题需要通过您所谓的编译器因任务 (TPL) 生成的循环依赖项 的示例来细化。需要示例的 .NET Reflector 屏幕截图 + 对应 NDepend 依赖矩阵的第二个屏幕截图才能获得明确的答案。
-
感谢您的回答,我将尝试复制并发布屏幕截图。
-
Patrick,我添加了更多信息。这是否足以帮助我对可能出现的问题有所了解?
标签: c# task-parallel-library ndepend