2
코드를 테스트하는 동안 이상한 행동을 보았습니다.ReleaseComObject가 정적 메서드에서 작동하지 않습니다.
이 :
if (_sampGrabber != null)
{
Marshal.ReleaseComObject(_sampGrabber);
_sampGrabber = null;
}
수율 _sampGrabber == NULL, 반면 후
ReleaseIfNotNull(_sampGrabber);
public static int ReleaseIfNotNull(object comObject)
{
int hr = 0;
if (comObject != null)
{
hr = Marshal.ReleaseComObject(comObject);
comObject = null;
}
return hr;
}
_sampGrabber를 이용한 다이렉트 SampleGrabber 필터 인터페이스 때 _sampGrabber는 여전히는 오리지널 값을 갖는다 .
이 동작에 대한 설명에 관심이 있습니다. Visual Studio Test Framework를 사용하여 테스트를 작성하면이 문제가 발생했습니다. 단지 자신의 (스택) 사본에 영향을
public static int ReleaseIfNotNull(ref object comObject)
는 ReleaseIfNotNull
내부 comObject
로컬 참조를 변경하지 않습니다 : 당신이 참조를 변경해야하는 경우