BitmapSource.SetSourceAsync(IRandomAccessStream) 메서드

정의

스트림에 BitmapSource 액세스하고 결과를 비동기적으로 처리하여 원본 이미지를 설정합니다.

UWP에 해당하는 WinUI 2 API: Microsoft.UI.Xaml.Media.Imaging.BitmapSource.SetSourceAsync(Windows 앱 SDK WinUI의 경우 Windows 앱 SDK 네임스페이스 참조).

public:
 virtual IAsyncAction ^ SetSourceAsync(IRandomAccessStream ^ streamSource) = SetSourceAsync;
/// [Windows.Foundation.Metadata.RemoteAsync]
IAsyncAction SetSourceAsync(IRandomAccessStream const& streamSource);
[Windows.Foundation.Metadata.RemoteAsync]
public IAsyncAction SetSourceAsync(IRandomAccessStream streamSource);
function setSourceAsync(streamSource)
Public Function SetSourceAsync (streamSource As IRandomAccessStream) As IAsyncAction

매개 변수

streamSource
IRandomAccessStream

이미지 원본 값을 설정하는 스트림 원본입니다.

반환

IAsyncAction

작업이 완료되면 비동기 처리기가 호출됩니다.

특성

예제

여기에 표시된 이 예제에서는 파일 스트림(표시되지 않고 파일 선택기를 사용하여 가져온)을 사용하여 SetSourceAsync를 호출하여 이미지 원본을 로드합니다. SetSourceAsync에 대한 파일 선택기, 스트림 및 호출은 모두 비동기입니다. 여기에 표시된 코드는 더 큰 코드 샘플인 SDK XAML 이미지 샘플에서 제공됩니다.

// Ensure the stream is disposed once the image is loaded
using (IRandomAccessStream fileStream = await file.OpenAsync(Windows.Storage.FileAccessMode.Read))
{
     // Set the image source to the selected bitmap
     BitmapImage bitmapImage = new BitmapImage();
     bitmapImage.DecodePixelHeight = decodePixelHeight;
     bitmapImage.DecodePixelWidth = decodePixelWidth;

     await bitmapImage.SetSourceAsync(fileStream);
     Scenario2Image.Source = bitmapImage;
}

설명

유사한 SetSource 메서드가 아닌 비동기 SetSourceAsync 메서드를 호출하여 이미지 원본을 설정하면 UI 스레드가 차단되는 것을 방지할 수 있습니다. SetSourceAsync 동작은 이미지 원본을 태그에서 URI로 설정할 때 시스템이 내부적으로 수행하는 동작과 유사합니다. 시스템은 검색 및 디코딩을 기다리지 않지만 이미지 원본을 사용할 수 있게 되면 레이아웃을 다시 실행합니다. 동등한 태그 구문 분석은 비동기 인프라를 노출하지 않지만 SetSourceAsync 메서드는 해당합니다. 비동기, await 를 사용하는 방법 또는 값으로 IAsyncAction 작업하는 방법에 대한 자세한 내용은 C# 또는 Visual Basic 비동기 API 호출을 참조하세요.

앱이 SetSourceAsync SetSource 를 통해 이미지 원본을 다시 변경하거나 UriSource SetSourceAsync 호출이 이미 진행 중인 동안 보류 중인 SetSourceAsync 작업이 TaskCanceledException 을 throw하고 상태를 취소됨으로 설정합니다.

원본으로 사용하려는 Microsoft .NET 스트림이 있는 경우 AsRandomAccessStream 확장 메서드를 사용하여 SetSourceAsync에 대한 입력으로 필요한 형식으로 변환 IRandomAccessStream 할 수 있습니다.

메모리가 낮은 경우(메모리가 낮은 휴대폰에서 가장 가능성이 높음) "이미지가 인식할 수 없음" 메시지와 HRESULT의 0x88982F60 예외가 발생할 수 있습니다. 이 예외는 일반적으로 잘못된 데이터를 나타내지만 앱이 메모리 제한에 근접하면 예외의 원인은 메모리가 부족할 수 있습니다. 이 경우 메모리를 해제하고 다시 시도하는 것이 좋습니다.

적용 대상

추가 정보