C# Извлечение диска случайно завершается неудачно, говоря, что сеанс должен быть закрыт (даже не записывая диск)
У моих пользователей в последнее время возникла досадная проблема.
У меня есть приложение, которое в основном берет изображения с дисков CD, DVD или USB и копирует их в сеть.
После завершения копирования он должен автоматически извлечь диск.
Проблема в том, что когда диск готов к копированию и извлекается, это занимает очень много времени. Одна из моих пользователей сказала, что она ждала час, чтобы он закрылся и извлекся.
На других дисках, где это произошло, пользователь будет пытаться нажать физическую кнопку извлечения, и всплывающее окно в Windows 7 выдает сообщение "Пожалуйста, подождите, пока сеанс не будет закрыт перед извлечением".
На диск ничего не записывается, и диск не является CD-RW или DVD-RW, поэтому я не понимаю, почему он должен закрывать сеанс на диске.
Возможно ли, что человек, который изначально сжег компакт-диск, как-то испортился?
Из 250 с лишним дисков, которые прошли сегодня, это произошло только на двух из них, что наводит меня на мысль, что с этими дисками что-то не так.
Вот мой метод, который извлекает диск:
private void Eject()
{
try
{
VolumeDeviceClass volumeDeviceClass = new VolumeDeviceClass();
foreach (Volume device in volumeDeviceClass.Devices)
{
if (!device.IsUsb)
continue;
if (device.LogicalDrive == null || (device.LogicalDrive.Length == 0))
continue;
/* Should get down here if our device is a usb drive */
device.Eject(true);
}
var sb = new StringBuilder();
mciSendString("open " + _driveName.Substring(0, 2) + " type cdaudio alias cddrive", sb, 127, IntPtr.Zero);
mciSendString("set cddrive door open", sb, 127, IntPtr.Zero);
}
catch (Exception ex)
{
ex.Log(ex.Message, Logger.Severity.Error, "Error ejecting CD drive: " + Environment.MachineName);
}
}