【问题标题】:error "unable to copy file because it is being used by another process错误“无法复制文件,因为它正在被另一个进程使用
【发布时间】:2013-08-21 16:47:40
【问题描述】:

我使用C#语言的windowsform应用程序,我有很多表单,当我想从一个遍历到另一个时,我使用this.Hide();

当我使用此方法时,我收到显示的错误,

我知道解决方案是使用 windows 任务管理器结束进程,但问题是 有什么方法可以在表单之间使用旅行而不导致此错误?

 Error  9   Unable to copy file "obj\x86\Debug\WindowsFormsApplication1.exe" to "bin\Debug\WindowsFormsApplication1.exe". The process cannot access the file 'bin\Debug\WindowsFormsApplication1.exe' because it is being used by another process.  C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets  2868

【问题讨论】:

  • 这种情况什么时候发生?什么时候重新编译?
  • 那是编译/文件系统问题,和你的代码无关。
  • 我猜你甚至隐藏了主窗体并试图从另一个 VS 实例重新运行你的应用程序,你为什么不直接关闭 froms?
  • @VahidND,是的,我隐藏了主窗体,当我关闭窗体时它并没有消失,我不知道为什么,只有隐藏功能解决了这个问题
  • 如何开始你的主窗体?你是用默认方式启动winform程序吗?我的意思是 Application.Run(new FormMain())

标签: c# winforms visual-studio-2010 forms


【解决方案1】:

简单的解决方案是在项目属性中添加一些代码..

只需转到项目选项卡并选择项目属性.. 从那里选择构建事件选项卡。 并在 Pre-build event 命令行中添加以下代码..

   if exist "$(TargetPath).locked" del "$(TargetPath).locked"
   if not exist "$(TargetPath).locked" move "$(TargetPath)" "$(TargetPath).locked"

【讨论】:

  • 我刚刚在 VS2017 中使用了它,因为我的 Xamarin 项目一直像 OP 一样失败。它也对我有用。谢谢。
  • 好的。我说得太早了。现在它错误地说退出代码 1。真正有用的错误消息 Microsoft。叹息。
【解决方案2】:

尽管您 Hide() 您的表单,但它们仍然是流程的一部分。如果您没有正确关闭每个表单,该进程将继续运行并且您无法重新编译您的项目,最终您将不得不使用任务管理器终止您的进程。
Visual Studio 尝试重写您的可执行文件,如果可执行文件作为进程运行,Windows 将拒绝写入您的 .exe。

【讨论】:

  • 如你所说,如果隐藏后,我关闭所有表单,这个错误会消失吗?
【解决方案3】:

只需删除bin文件夹中的.exe文件:bin\Debug\WindowsFormsApplication1.exe

别担心,构建会创建一个新的。

【讨论】:

  • 谢谢!我无法删除 bin 下的文件/文件夹,因为它抛出错误,因为“文件正在被另一个程序使用”。我重命名了正在运行的 project.exe 并尝试构建,这为我解决了这个错误。
【解决方案4】:

我相信这是在您编译应用程序或开始调试应用程序时发生的。

这可能是由于。

  1. 在 VS 中停止调试时,进程可能不会停止。
  2. 可能是您刚刚通过双击执行了该应用程序。
  3. 可能是由于权限问题。如果您使用源代码管理,下载项目时某些文件夹可能会被视为只读。所以你需要手动编辑它。
  4. 确保使用 Application.Exit() 退出所有进程。 http://msdn.microsoft.com/en-us/library/system.windows.forms.application.exit.aspx

【讨论】:

  • 其实当我隐藏表单的时候,出现了这个错误!什么是替代编码?
  • 你有多少表格?您是否隐藏所有表格?显示代码 sn -p
  • 表格有很多种,下图只有一个: Class1 newclass= new Class1(); this.Hide(); newclass.Show();
  • 发生错误时。请分享高级manae的步骤
【解决方案5】:

我终于如何解决它。为什么第一次调试后我们不能继续调试,因为第一个调试的 exe 仍在运行。因此,在第一次调试后,您需要转到任务管理器 -> 进程选项卡 -> [您的项目名称 exe] 结束 exe 进程。

【讨论】:

    【解决方案6】:

    关闭视觉工作室 在 Windows 7 中 单击 Shift + Ctrl + esc 在选项卡进程中 找到类似项目名称的进程并结束它。

    【讨论】:

      【解决方案7】:

      我设法通过删除 suo 文件(隐藏的解决方案文件)来修复它。

      【讨论】:

        【解决方案8】:

        简单的方法是从项目目录文件夹中删除.exe文件并重新构建项目。这将创建新的 exe 文件并解决问题。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-07-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多