在控制台应用程序中锁定代码块的最佳做法是什么,这样在运行多个实例时,它不会产生任何问题,可执行文件/应用程序
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();
答案 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(); }