0
我爲我的C#/ WPF項目使用DirectShowLib-2005。當相機啓動時,我運行媒體控制:停止IMediaControl永不結束
m_FilterGraph = new FilterGraph() as IFilterGraph2;
/* Initializations */
IMediaControl mediaCtrl = m_FilterGraph as IMediaControl;
hr = mediaCtrl.Run();
DsError.ThrowExceptionForHR(hr);
應用程序運行,相機工作良好。但有時(並非總是)當我退出應用程序凍結時。我暫停了調試器,並且我看到應用程序在以下行停止:
if (m_FilterGraph != null)
{
IMediaControl mediaCtrl = m_FilterGraph as IMediaControl;
mediaCtrl.Stop(); // <= *** Blocked here ***
Marshal.ReleaseComObject(m_FilterGraph);
m_FilterGraph = null;
}
如何防止此凍結?我可以添加一個時間或嘗試/趕上?
我已經嘗試列出所有與調試器的線程。在我的主窗口打開之前,我已經有10個線程在運行,一半沒有名字,我看不到代碼或堆棧跟蹤。我的問題是我有一個線程調用'hr = mediaCtrl.Run();'在我的主線程之前(我用Thread.CurrentThread.ManagedThreadId添加了MessageBox)。我不知道是誰叫它,斷點不停止。 –
我列出瞭如此多的線索,並在上面顯示了您的症狀。這意味着問題非常普遍,您只需執行此附加疑難解答即可識別您遇到的問題。 –
我已經閱讀了所有的鏈接,但我仍然迷失在這個問題上。我是線程管理的初學者,我正在調試的應用程序不是由我開發的。我通過事件處理程序識別了阻塞的線程調用。我試圖關閉它,它似乎是根據我讀過的所有內容凍結的原因。 –