■ Task<T> 클래스의 ConfigureAwait 메소드를 사용해 await 이후 스레드 풀 스레드에서 실행하는 방법을 보여준다.
※ 기본적으로 async/await 패턴은 작업이 완료된 후 원래의 동기화 컨텍스트로 돌아온다.
※ UI 스레드에서 시작된 작업은 완료 후 다시 UI 스레드로 돌아오게 된다.
※ ConfigureAwait(false)는 await 이후의 코드가 반드시 원래의 동기화 컨텍스트로 돌아올 필요가 없음을 지정한다.
• UI 관련 작업에는 사용하지 않아야 한다.
• UI 업데이트는 UI 스레드에서 이루어져야 한다.
• 특히 UI 스레드와 관련 없는 작업에서 유용하다.
▶ 예제 코드 (C#)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
using System.Threading.Tasks; using Windows.Foundation; using Windows.Storage; StorageFolder storageFolder = await StorageFolder.GetFolderFromPathAsync(@"D:\"); IAsyncOperation<IStorageItem> storageItemAsyncOperation = storageFolder.TryGetItemAsync("sample.dat"); Task<IStorageItem> task = storageItemAsyncOperation.AsTask(); IStorageItem storageItem = await task.ConfigureAwait(false); |