锁定代码的特定部分

时间:2013-01-22 14:17:59

标签: c# locking

在控制台应用程序中锁定代码块的最佳做法是什么,这样在运行多个实例时,它不会产生任何问题,可执行文件/应用程序

string folder = Convert.ToString(ConfigurationManager.AppSettings["LogFilePath"]);
string configFile = Path.Combine(folder, "logger.xml");
FileStream fs = new FileStream(configFile, FileMode.Open);
log4net.Config.XmlConfigurator.Configure(fs);
fs.Close();

1 个答案:

答案 0 :(得分:0)

您应该使用互斥锁。 “同步原语,也可用于进程间同步。”请参阅:Msdn

类似的东西:

var mutex = new Mutex(false, "logger.xml-mutex");
if (!mutex.WaitOne(TimeSpan.FromSeconds(100), false))
{
    Console.WriteLine("Timed out...could not acquire mutex.");
    return;
}
try
{
    string folder = Convert.ToString(ConfigurationManager.AppSettings["LogFilePath"]);
    string configFile = Path.Combine(folder, "logger.xml");
    FileStream fs = new FileStream(configFile, FileMode.Open);
    log4net.Config.XmlConfigurator.Configure(fs);
    fs.Close();
}
finally { mutex.ReleaseMutex(); }