首页 文章

该进程无法访问该文件,因为该文件正由另一个进程使用

提问于
浏览
0

我得到的代码来自naudio record sound from microphone then save,非常感谢Corey

这是我在第二次或以后运行代码时收到的错误消息 . 第一次运行时,它运行时没有任何问题 .

如果我更改文件名,它可以完美地工作 .

无法将文件“obj \ Debug \ Basque.exe”复制到“bin \ Debug \ Basque.exe” . 该进程无法访问文件'bin \ Debug \ Basque.exe',因为它正由另一个进程使用 . 巴斯克

有人可以给我一些指导,告诉我我的错误

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using NAudio.Wave;

    namespace Basque
    {
        public partial class FlashCard : Form
        {
        public WaveIn waveSource = null;
        public WaveFileWriter waveFile = null;

        public FlashCard()
        {
            InitializeComponent();
            StopBtn.Enabled = false;
            StartBtn.Enabled = true;
        }

        private void StartBtn_Click(object sender, EventArgs e)
        {
            StartBtn.Enabled = false;
            StopBtn.Enabled = true;

            waveSource = new WaveIn();
            waveSource.WaveFormat = new WaveFormat(44100, 1);

            waveSource.DataAvailable += new EventHandler<WaveInEventArgs>(waveSource_DataAvailable);
            waveSource.RecordingStopped += new EventHandler<StoppedEventArgs>(waveSource_RecordingStopped);

            waveFile = new WaveFileWriter(@"C:\Temp\bas0001.wav", waveSource.WaveFormat);

            waveSource.StartRecording();
        }

        private void StopBtn_Click(object sender, EventArgs e)
        {
            StopBtn.Enabled = false;

            waveSource.StopRecording();
        }

        void waveSource_DataAvailable(object sender, WaveInEventArgs e)
        {
            if (waveFile != null)
            {
                waveFile.Write(e.Buffer, 0, e.BytesRecorded);
                waveFile.Flush();
            }
        }

        void waveSource_RecordingStopped(object sender, StoppedEventArgs e)
        {
            if (waveSource != null)
            {
                waveSource.Dispose();
                waveSource = null;
            }

            if (waveFile != null)
            {
                waveFile.Dispose();
                waveFile = null;
            }

            StartBtn.Enabled = true;
        }

        private void PlayBtn_Click(object sender, EventArgs e)
        {

        }

        private void ExitBtn_Click(object sender, EventArgs e)
        {

        }
    }
}

1 回答

  • 1

    使用Application.Exit()放置Formclosing方法可能会有所帮助;在里面 . 如果它只在第一次尝试时起作用,可能是因为应用程序没有完全关闭 .

    检查任务管理器时,您可以检查是否会修复它 . 只需确保您的应用程序不在那里 . 即使它仍然存在,Application.Exit();可能有帮助 .

相关问题