Microsoft编码器SDK内存泄漏

Microsoft编码器SDK内存泄漏,sdk,expression-encoder-sdk,expression-encoder-4,Sdk,Expression Encoder Sdk,Expression Encoder 4,我正在使用EE4,每次调用\u deviceSource.previewindow=new previewindow(new-HandleRef(picBox,picBox.Handle))内存使用增加约60 MB。问题是,当我关闭表单并处理\u job和\u devicesource上的所有资源时,系统不会释放内存…即使我调用CG.collect()系统仍然使用这些60MB来执行某些操作。如果我多次尝试调用表单,问题会更严重。在某个时刻,由于内存利用率不断增加,我得到了内存不足错误。 有什么建

我正在使用EE4,每次调用
\u deviceSource.previewindow=new previewindow(new-HandleRef(picBox,picBox.Handle))内存使用增加约60 MB。问题是,当我关闭表单并处理
\u job
\u devicesource
上的所有资源时,系统不会释放内存…即使我调用
CG.collect()系统仍然使用这些60MB来执行某些操作。如果我多次尝试调用表单,问题会更严重。在某个时刻,由于内存利用率不断增加,我得到了内存不足错误。

有什么建议吗?我检查了SDK示例,在所有情况下问题都会持续存在。所以我的问题是:这是一个bug吗?

我的错误。。。!我没有正确配置所有资源:

_deviceSource.PreviewWindow = null;
_job.RemoveDeviceSource(_deviceSource);
_deviceSource.Dispose();

释放视频上使用的所有内存资源。

我今天遇到了同样的问题。我发现在调用
job.RemoveDeviceSource(source)
之前,您必须调用
source.PreviewWindow.Dispose()

//删除、处置和设置null的顺序非常重要。
//否则会造成巨大的内存泄漏。
//第一站编码
job.StopEncoding();
//第二,必须处理预览窗口

//在调用Job.RemoveDeviceSource之前,泄漏可能发生在本机域(非托管)资源中,尤其是与视频相关的资源,并且可能涉及第三方库。在没有具体信息的情况下很难给出建议,但您可能应该
1
检查加载了哪些非MS DLL
2
问题是否发生在干净的窗口中谢谢您@Roman R。我会检查计算机上是否有任何非Microsoft编解码器,但我在不同的计算机上尝试了相同的结果。每次执行PreviewWindow属性时,我都可以看到即使在表单完成、释放和调用垃圾回收器之后也没有释放的内存量。如果让父窗体保持活动状态,每次调用加载视频的子窗体时,内存利用率都会增加。我测试了一些使用编码器4的其他示例,得到了相同的结果。
// The order in which we remove, dispose, and set null is very important. 
// Anything less creates a huge memory leak.
// 1st Stop Encoding
job.StopEncoding();

// 2nd, Must Dispose the Preview Window 
// Before Calling Job.RemoveDeviceSource << Absolutely
source.PreviewWindow.Dispose();
source.PreviewWindow = null;

// 3rd, Remove the Source
job.RemoveDeviceSource(source);

// 4th, Dispose the Source
source.Dispose();
source = null;

// 5th, Dispose the Job
job.Dispose();
job = null;