Поделиться через


MediaFrameReader.TryAcquireLatestFrame Метод

Определение

Пытается получить объект MediaFrameReference , представляющий последний кадр из MediaFrameSource.

public:
 virtual MediaFrameReference ^ TryAcquireLatestFrame() = TryAcquireLatestFrame;
MediaFrameReference TryAcquireLatestFrame();
public MediaFrameReference TryAcquireLatestFrame();
function tryAcquireLatestFrame()
Public Function TryAcquireLatestFrame () As MediaFrameReference

Возвращаемое значение

Объект MediaFrameReference, представляющий последний кадр из источника кадров мультимедиа.

Комментарии

Этот метод не всегда выполняется успешно. Если метод завершается сбоем, возвращаемый объект MediaFrameReference будет иметь значение NULL, поэтому перед попыткой его использования всегда следует проверять, имеет ли возвращенный объект значение NULL. Этот метод следует вызывать из обработчика события MediaFrameReader.FrameArrived вместо того, чтобы вручную опрашивал новые кадры.

Каждый MediaFrameReader поддерживает циклический буфер объектов MediaFrameReference , полученных из TryAcquireLatestFrame. После использования всех объектов MediaFrameReference в буфере последующие вызовы TryAcquireLatestFrame вызовут метод Close (или Dispose в C#) для самого старого объекта буфера, чтобы повторно использовать его. После удаления объекта вы больше не сможете использовать его для доступа к данным кадра. По этой причине не следует хранить объект MediaFrameReference дольше, чем требуется для обработки кадра. Если в сценарии приложения требуется хранить ссылку на данные дольше, следует использовать один из API, предоставленных для получения базовых данных. К ним относятся следующие объекты.

Приложение отвечает за вызов Close (или Dispose) для объектов, возвращаемых этими API, когда они больше не используются.

Важно!

Если вы осуществляете доступ к объектам SoftwareBitmap или Direct3DSurface, предоставляемым свойством VideoMediaFrame класса MediaFrameReference, система создает строгую ссылку на эти объекты, что означает, что они не будут удален при вызове метода Dispose в содержащем классе MediaFrameReference. Это также относится к объектам SoftwareBitmap или Direct3DSurface , предоставляемым объектом VideoFrame , который вы получаете из свойства MediaFrameReference.VideoMediaFrame . Необходимо явно вызвать метод Dispose класса SoftwareBitmap или Direct3DSurface непосредственно для объектов, чтобы немедленно удалить их. В противном случае сборщик мусора в конечном итоге освободит память для этих объектов, однако узнать, когда это произойдет, невозможно, и если количество выделенных растровых изображений или поверхностей превышает максимальное количество, разрешенное системой, поток новых кадров будет остановлен.

Применяется к