次のサンプル コードでは、C: ドライブに作成されたログ ファイル "ParallelLog.txt" が表示されません。(大量のコードで申し訳ありません!)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;
using System.IO;
namespace Logger
{
internal class Program
{
static List<Employee> employees = new List<Employee>()
{
new Employee{Name = "William", Age=30, RollNo=1234},
new Employee{Name = "Martin", Age=29, RollNo=1235},
new Employee{Name = "Richard", Age=28, RollNo=1236},
new Employee{Name = "Baldwin", Age=27, RollNo=1237}
};
static void Main(string[] args)
{
Task task = Task.Factory.StartNew(() =>
{
foreach (Employee employee in employees.AsParallel().AsOrdered())
{
WriteToLog(employee);
}
});
}
public static void WriteToLog(Employee employee)
{
static string fileName = @"C:\ParallelLog.txt";
private static object lockObject = new object();
lock (lockObject)
{
StreamWriter writer = new StreamWriter(fileName, true);
writer.WriteLine("{0} - {1} - {2}", employee.Name, employee.Age, employee.RollNo);
writer.Close();
writer.Dispose();
writer = null;
}
}
}
internal class Employee
{
public int Age { get; set; }
public string Name { get; set; }
public int RollNo { get; set; }
}
}
上記のコードに何か問題がありますか? このサンプルは、実際のプロジェクトのログ ファイル作成プロセスのベースです。