1. 程式人生 > WINDOWS開發 >C# 專案中遇到過的坑(持續更新)

C# 專案中遇到過的坑(持續更新)

報錯:嘗試讀取或寫入受保護的記憶體。這通常指示其他記憶體已損壞

技術分享圖片

因為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()的呼叫放在了主執行緒,所以暫時沒出現之前的問題

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