报错:尝试读取或写入受保护的内存。这通常指示其他内存已损坏

 

 

 因为 waveSource是在主线程中生成的,但是waveSource.Dispose();是新建了一个线程调用的,所以此处问题,我是用以下方式解决的

private void Time_Elapsed(object sender, ElapsedEventArgs e)
        {
            if (boo) {
                time++;
                if (time >= 3) {
                    boo = false;
                    time = 0;
                    Dispatcher.Invoke(
                        new Action(delegate {
                            recorder.StopRec();
                        })
                    );
                    //recorder.StopRec();
                }
            }
        }

其中Time_Elapsed是新建的那个线程,waveSource.Dispose();通过 recorder.StopRec();调用,之前是直接调用,所以报错了

现在改成了Dispatcher.Invoke的形式,将 recorder.StopRec()的调用放在了主线程,所以暂时没出现之前的问题

 

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

posted on 2020-04-24 11:49  凌落成迷  阅读(320)  评论(0编辑  收藏  举报