Нет полного завершения потока - C#

Узнай цену своей работы

Формулировка задачи:

Возникла проблема, в одном из потоков на первой форме запускается функция, которая открывает и закрывает DVD привод раз в 3 секунды:
private void Process2()
        {
            while (true)
            {
                mciSendString("open G: type CDAudio alias driveG", null, 0, IntPtr.Zero);
                mciSendString("set driveG door open", null, 0, IntPtr.Zero);
                System.Threading.Thread.Sleep(3000);
                mciSendString("closed G: type CDAudio alias driveG", null, 0, IntPtr.Zero);
                mciSendString("set driveG door closed", null, 0, IntPtr.Zero);
            }
        }
Далее происходить прерывание вышеуказанного потока по таймеру:
private void timerTick(object sender, EventArgs e)
        {
            Process1.Abort();
        }
Проблема в том, что при запуске уже в новом потоке на второй форме:
private void Process4()
        {
            while (true)
            {
                mciSendString("open G: type CDAudio alias driveG", null, 0, IntPtr.Zero);
                mciSendString("set driveG door open", null, 0, IntPtr.Zero);
                System.Threading.Thread.Sleep(3000);
                mciSendString("closed G: type CDAudio alias driveG", null, 0, IntPtr.Zero);
                mciSendString("set driveG door closed", null, 0, IntPtr.Zero);
            }
        }
ничего не происходит, т.е DVD привод не открывается, хотя сам поток запускается. В чем проблема не пойму. Может "while" не завершается. Если запускать приложение сразу со 2 формы, то всё работает.

Решение задачи: «Нет полного завершения потока»

textual
Листинг программы
Process1.Abort();
Process1.Join();

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.8 из 5