NDepend を使用して、タスク (TPL) によってコンパイラによって生成されたサイクル依存関係を依存関係マトリックスから削除するにはどうすればよいでしょうか。
それらを削除できない場合、注意が必要な重要なサイクルの依存関係とどのように簡単に区別できるでしょうか。
コンパイラが生成したサイクルの依存関係を処理するためのベスト プラクティスはありますか?
編集:
コンパイラによって生成された依存関係サイクルは、図の左上で確認できます。
依存関係サイクルを生成するコード (.Net 4.0 でコンパイル)
*ロガーは私のクラスのフィールドです
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
}
}