【问题标题】:delayed usb stick removal after close application running from USB关闭从 USB 运行的应用程序后延迟 USB 记忆棒移除
【发布时间】:2018-01-26 02:17:37
【问题描述】:

我在 C# VS2005 中有这个程序,用于从 U 盘复制文件和向 U 盘复制文件

因为它将用于只有触摸屏的嵌入式 Windows,所以它作为“autorun.exe”从 USB 加载(执行为“检测到的 USB 驱动器”对话框显示),因此无需从硬盘驱动器运行安装允许。

我无法弹出正在使用的驱动器,因为它是从那里运行的,有没有办法让exe结束Form,然后在所有执行结束后执行我的“RemoveDrive”功能?

这是我的代码:

  private void button2_Click_1(object sender, EventArgs e)
    {

        this.Close();
        System.Threading.Thread.Sleep(3000);
        RemoveDriveTools.RemoveDrive(discz);
    }

这会得到与程序仍然打开时相同的错误

“discz”的盘符为“F:”

RemoveDriveTools.RemoveDrive

是弹出驱动器的方法。

感谢您的建议。

【问题讨论】:

    标签: c# usb delayed-execution


    【解决方案1】:

    这是我的建议:

    这不能在代码中完成,因为在程序执行时,系统被锁定。我推荐以下两种方法之一来完成此任务:

    1. 启动带有或不带有标志的程序。 一种。当程序在没有标志的情况下启动时,它会将自身复制到拇指驱动器的另一个目录(以及任何所需的 DLL)(想想临时目录),并在启用标志的情况下启动该版本的程序。 湾。启用标志的版本将运行,并且由于标志将知道它没有从驱动器运行。

    2. 正常从 U 盘运行。程序退出后启动一个批处理文件,该文件将: 一种。暂停一下以确保程序真正退出。 湾。运行命令行以关闭拇指驱动器。 (Safely remove USB from batch file?)

    选择选项 1,它更容易。这将强制您的程序从临时区域而不是拇指驱动器运行“正常”执行。

    【讨论】:

      猜你喜欢
      • 2018-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-14
      • 1970-01-01
      • 2020-08-17
      • 1970-01-01
      相关资源
      最近更新 更多