首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

C# DirectShow开发 资源释放的有关问题

2012-08-03 
C# DirectShow开发 资源释放的问题我用如下方法播放视频,每次播放新文件时都先调用Init,再调用Open播放没

C# DirectShow开发 资源释放的问题
我用如下方法播放视频,每次播放新文件时都先调用Init,再调用Open
播放没有问题,资源占用也都正常,只是每次播放一个新文件资源监视器都会发现程序多了一个线程,播放几十个文件以后会多出几十个线程,但是感觉这些线程都没有资源消耗,内存、Cpu都正常
请问要怎么才能把DirectShow的资源清理干净?

C# code
        public void Init()        {            if (_graph != null)            {                ReleaseGraph();                Marshal.ReleaseComObject(_graph);                _graph = null;                GC.Collect();            }            _graph = new FilterGraph() as IFilterGraph;            if (_graph != null) _graph.AddFilter(CreateRenderer() as IBaseFilter, "Video Mixing Renderer 9");            State = MediaState.Close;        }        public void Open(string filename)        {            var mediaControl = _graph as IMediaControl;            if (mediaControl != null)            {                mediaControl.RenderFile(filename);                State = MediaState.Open;            }        }        private void ReleaseGraph()        {            IEnumFilters filters = null;            _graph.EnumFilters(out filters);            IBaseFilter[] filter = new IBaseFilter[1];            while (filters.Next(1, filter, IntPtr.Zero) == 0)            {                _graph.RemoveFilter(filter[0]);            }        }


[解决办法]
看到COM、线程字样,脑袋顿时大了1倍……

热点排行