代码之家  ›  专栏  ›  技术社区  ›  StartCoding

实现Kernel32Dll.CreateFile会出现“进程无法访问文件,因为它正被另一个进程使用”错误

  •  0
  • StartCoding  · 技术社区  · 10 年前

    我们在应用程序中实现了以下代码:

    'SafeFileHandlehandle=Kernel32Dll.CreateFile(“filepath”,GenericRead,Read|Write,IntPtr.Zero,Open,None,IntPtr.Zero);

    当只使用一个应用程序实例时,它工作得很好,但当两个应用程序同时尝试加载同一个文件时,它会抛出 “该进程无法访问该文件,因为另一个进程正在使用该文件”错误。

    在这种情况下,Kernel32Dll.CreateFile的适当用途是什么??

    1 回复  |  直到 10 年前
        1
  •  0
  •   StartCoding    10 年前

    我们发现了代码中的一些错误。我们需要在文件共享中放置FILE_SHARE_READ而不是READ|Write。我们代码的另一部分也存在问题。以下是工作版本:

    SafeFileHandlehandle=Kernel32Dll.CreateFile(“文件路径”,GenericRead,FILE_SHARE_READ,IntPtr.Zero,Open,None,IntPtr.Zero);

    当做