如果我使用Poco互斥锁关闭程序,我会得到一个未处理的异常。
我使用全局
Poco::Mutex mymutex ;
在我的cpp文件中,因为我有一个用于日志记录的静态类(我也尝试将其声明为静态成员,但是我得到了同样的错误)。
我的代码的相关部分(它是一个静态函数):
void Log::log(std::string message)
{
try
{
Poco::Mutex::ScopedLock lock(mymutex);
std::ofstream f("log.txt", std::ios_base::app) ;
f << message << std::endl ;
f.close() ;
}
catch (...)
{
}
}
这部分代码在我的程序中运行良好(在使用互斥锁之前没有相互之间的行),但是在我关闭程序之后,我收到以下错误消息:
Unhandled exception at 0x77c3a710 in myprogram.exe: 0xC0000005:
Access violation writing location 0x00000014.
我还尝试在写入文件之前和之后使用mymutex.lock()和mymutex.unlock(),但是我得到了同样的错误。
我也试过这段代码:
while(!mymutex.tryLock())
Poco::Thread::sleep(30);
但它导致无限循环,程序在关闭窗口后没有停止。
我使用Visual Studio 2010和Poco 1.4。