C# 第二次使用第二页时无法使用麦克风

C# 第二次使用第二页时无法使用麦克风,c#,xna,C#,Xna,在我应用程序的一个页面中,我通过麦克风录制。 只要我停留在那个页面上,我就可以停下来重新录制 但当我离开页面返回并按record时,麦克风什么也听不到。结果是静音 这是构造函数 private byte[] _buffer; private int _passedSecs = 0; private const string RECORDFILE = "newrecording.wav"; private Microphone _mic = Microphone.Default; privat

在我应用程序的一个页面中,我通过麦克风录制。 只要我停留在那个页面上,我就可以停下来重新录制

但当我离开页面返回并按record时,麦克风什么也听不到。结果是静音

这是构造函数

private byte[] _buffer;
private int _passedSecs = 0;

private const string RECORDFILE = "newrecording.wav";

private Microphone _mic = Microphone.Default;
private MemoryStream _stream = new MemoryStream();
private DispatcherTimer _framework;

public MyPage()
{
    InitializeComponent();

    _framework = new DispatcherTimer();
    _framework.Interval = TimeSpan.FromMilliseconds(33);
    _framework.Tick += _framework_Tick;

    _mic.BufferReady += _mic_BufferReady;
}

private void _mic_BufferReady(object sender, EventArgs e)
{
    _mic.GetData(_buffer);
    _stream.Write(_buffer, 0, _buffer.Length);

    var isoStore = IsolatedStorageFile.GetUserStoreForApplication();
    var targetFile = isoStore.CreateFile(RECORDFILE);

    WavHeaderWriter.WriteHeader(targetFile, (int)_stream.Length, 1, _mic.SampleRate);
    var dataBuffer = _stream.GetBuffer();

    targetFile.Write(dataBuffer, 0, (int)_stream.Length);
    targetFile.Flush();
    targetFile.Close();
}
这是我的记录

private async void startRecording()
{
    _framework.Start();

    _mic.BufferDuration = TimeSpan.FromMilliseconds(500);
    _buffer = new byte[_mic.GetSampleSizeInBytes(_mic.BufferDuration)];

    _stream.SetLength(0);
    _mic.Start();
}
我在这里停下来

private void stopRecording()
{
    var isoStore = System.IO.IsolatedStorage.IsolatedStorageFile.GetUserStoreForApplication();
    IsolatedStorageFileStream _data = isoStore.OpenFile(RECORDFILE, FileMode.Open);

    SoundEffect sound = SoundEffect.FromStream(_data);
    _data.Close();
    sound.Play();

    _mic.Stop();
    _framework.Stop();
    isoStore.Dispose();
}

您应该在
PageNavigatedFrom
事件中取消订阅
麦克风事件
(从该页面导航时触发的事件)