基本的なロギング クラスを実装しましたが、その新しいインスタンスを作成しようとすると、次の例外が発生します。
別のプロセスで使用されているため、プロセスはファイル 'C:\Users\carl\Desktop\My Projects\TCV2\CallPotential.UI\bin\Debug\application.log' にアクセスできません。
以下は、ロガー クラスのコードです。
using System;
using System.IO;
using System.Reflection;
namespace CallPotential.Utilities
{
public class Logger : IDisposable
{
/// <summary>
/// Used to write output to the log file.
/// </summary>
private StreamWriter _stream;
/// <summary>
/// The absolute path to the log files location.
/// </summary>
public String LogFileName
{
get
{
// get the directory where our main assembly is located.
Assembly assembly = Assembly.GetExecutingAssembly();
String directoryName = Path.GetDirectoryName(assembly.Location);
return Path.Combine(directoryName, "application.log");
}
}
/// <summary>
/// Creates a new instance of the Logger class
/// </summary>
public Logger()
{
_stream = new StreamWriter(LogFileName);
}
/// <summary>
/// Writes a message out to the application log file.
/// </summary>
/// <param name="message">The message to write to the log file.</param>
public void Write(String message)
{
_stream.WriteLine(message);
_stream.Flush();
_stream.Close();
}
/// <summary>
/// Writes a message including the applications state to the log file.
/// </summary>
/// <param name="state">The application state at the time of the logged message.</param>
/// <param name="message">The message to be written to the log file.</param>
public void Write(AppState state, String message)
{
Write(String.Format("{0}\r\n\t{1}", state, message));
}
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
public void Dispose(bool disposing)
{
if (disposing)
{
if (_stream != null)
{
_stream.Dispose();
_stream = null;
}
}
}
~Logger()
{
Dispose(false);
}
}
}
理由は確かですが、コンストラクターで例外がスローされます。これを理解するための助けをいただければ幸いです。