在测试我的代码时,我遇到了一种我觉得奇怪的行为。
这个:
if (_sampGrabber != null)
{
Marshal.ReleaseComObject(_sampGrabber);
_sampGrabber = null;
}
产生 _sampGrabber==null,而在
ReleaseIfNotNull(_sampGrabber);
_sampGrabber 使用时仍有其原始值
public static int ReleaseIfNotNull(object comObject)
{
int hr = 0;
if (comObject != null)
{
hr = Marshal.ReleaseComObject(comObject);
comObject = null;
}
return hr;
}
_sampGrabber 是一个 DirectShow SampleGrabber 过滤器接口。
我对这种行为的解释很感兴趣。我在使用 Visual Studio 测试框架编写测试时遇到了它。