BitmapSource.SetSourceAsync(IRandomAccessStream) 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
스트림에 액세스하고 결과를 비동기적으로 처리하여 BitmapSource 의 원본 이미지를 설정합니다.
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
이미지 원본 값을 설정하는 스트림 원본입니다.
반환
작업이 완료되면 비동기 처리기가 호출됩니다.
- 특성
예제
여기에 표시된 이 예제에서는 파일 스트림(표시되지 않고 파일 선택기를 사용하여 가져온)을 사용하여 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#에서 비동기 API 호출 또는 Visual Basic을 참조하세요.
SetSourceAsync 호출이 이미 진행 중인 동안 앱이 SetSourceAsync, SetSource 또는 UriSource 를 통해 이미지 원본을 다시 변경하는 경우 보류 중인 SetSourceAsync 작업은 TaskCanceledException 을 throw하고 상태를취소됨으로 설정합니다.
원본으로 사용하려는 Microsoft .NET 스트림이 있는 경우 AsRandomAccessStream 확장 메서드를 사용하여 SetSourceAsync에 대한 입력으로 필요한 IRandomAccessStream 형식으로 변환할 수 있습니다.
메모리가 낮은 경우(메모리가 낮은 휴대폰에서 가장 가능성이 높음) "이미지가 인식할 수 없음" 메시지와 0x88982F60 HRESULT와 함께 예외가 발생할 수 있습니다. 이 예외는 일반적으로 잘못된 데이터를 나타내지만 앱이 메모리 제한에 근접하면 예외의 원인은 메모리가 부족할 수 있습니다. 이 경우 메모리를 해제하고 다시 시도하는 것이 좋습니다.