在我将开发环境从 .Net 3.5 切换到 .Net 4.0 后,以下代码无法正常工作。我认为 Marshal.GetLastWin32Error() 的实现已经改变。
使用 .Net 3.5 返回 32,但使用 .Net 4.0 返回 0。
我该如何解决这个问题?有什么建议吗?
private StarterFile(string path, FileMode mode, FileAccess access, FileShare share, out bool isLocked)
{
isLocked = false;
m_Path = path;
m_Mode = mode;
m_Access = access;
m_Share = share;
try
{
m_Stream = new FileStream(path, mode, access, share);
m_Handle = m_Stream.SafeFileHandle;
}
catch (IOException)
{
int error = Marshal.GetLastWin32Error();
if (!HandleFileIoError(error, "File locked") && error == ERROR_SHARING_VIOLATION)
{
isLocked = true;
}
else
throw;
}
}