Condividi tramite


MediaFrameReader.TryAcquireLatestFrame Metodo

Definizione

Tenta di ottenere un oggetto MediaFrameReference che rappresenta il fotogramma più recente da MediaFrameSource.

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

Restituisce

MediaFrameReference che rappresenta il fotogramma più recente dall'origine dei fotogrammi multimediali.

Commenti

Questo metodo non ha sempre esito positivo. Se il metodo ha esito negativo, MediaFrameReference restituito sarà Null, quindi è consigliabile verificare sempre se l'oggetto restituito è Null prima di provare a usarlo. È consigliabile chiamare questo metodo dall'interno del gestore per l'evento MediaFrameReader.FrameArrived anziché eseguire manualmente il polling per i nuovi fotogrammi.

Ogni MediaFrameReader mantiene un buffer circolare di oggetti MediaFrameReference ottenuti da TryAcquireLatestFrame. Dopo l'uso di tutti gli oggetti MediaFrameReference nel buffer, le chiamate successive a TryAcquireLatestFrame causeranno la chiamata di Close (o Dispose in C#) nell'oggetto buffer meno recente per riutilizzarla. Dopo aver eliminato l'oggetto, non è più possibile usarlo per accedere ai dati del frame. Per questo motivo, non è consigliabile archiviare l'oggetto MediaFrameReference più a lungo del necessario per elaborare il frame. Se lo scenario dell'app richiede di mantenere un riferimento ai dati per più tempo, è consigliabile usare una delle API fornite per ottenere i dati sottostanti. Queste includono:

È responsabilità dell'app chiamare Close (o Dispose) sugli oggetti restituiti da queste API quando non vengono più usati.

Importante

Se accedi all'oggetto SoftwareBitmap o Direct3DSurface specificato dalla proprietà VideoMediaFrame di un oggetto MediaFrameReference, il sistema crea un riferimento sicuro a questi oggetti, che di conseguenza non vengono eliminati quando chiami Dispose nell'oggetto MediaFrameReference contenitore. Questo vale anche per gli oggetti SoftwareBitmap o Direct3DSurface forniti dall'oggetto VideoFrame ottenuto dalla proprietà MediaFrameReference.VideoMediaFrame . Devi chiamare in modo esplicito direttamente il metodo Dispose di SoftwareBitmap o Direct3DSurface perché gli oggetti vengano eliminati immediatamente. In caso contrario, Garbage Collector finirà per liberare la memoria per questi oggetti, ma non saprai quando e se il numero di bitmap o superfici allocate supera la quantità massima consentita dal sistema, il flusso di nuovi fotogrammi si arresterà.

Si applica a