从USB运行关闭应用程序后延迟usb棒移除

时间:2018-01-26 02:17:38

标签: c# usb delayed-execution

我在C#VS2005中有这个程序用于从USB记忆棒复制文件

因为它将用于只有触摸屏的嵌入式Windows,它从usb加载为“autorun.exe”(执行为“检测到的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

是弹出驱动器的方法。

感谢您的建议。

1 个答案:

答案 0 :(得分:0)

这是我的建议:

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

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

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

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