async를 지원하는 메소드를 사용하는 경우에 await를 걸어야 하는 문법이 있어서 이런식이면 그냥 synchronous하게 코딩하는 것이 아닌가? 하는 생각을 하고 있었는데, 잘못 알고 있었다.


await라고 해서 거기서 기다리는 것이 아니라 바로 다음 작업을 시작해버린다.

브레이크 포인트를 잡아놓고 해보면 바로 감이 온다.

문제는 내가 반드시 동기를 맞추어주고 싶다는 생각이 들 때인데, 어떻게 해야할지 여기저기 검색을 해보다가 그나마 괜찮아 보이는 예제를 찾았다.


https://social.msdn.microsoft.com/Forums/windowsapps/en-US/dc0ea02d-1f40-4150-9f5b-f6c3049b6393/can-i-use-asynchronous-api-synchronously?forum=winappswithcsharp


        public void LoadDCImage()
        {
            Task task = Task.Factory.StartNew(async () => {
                StorageFolder appFolder = Package.Current.InstalledLocation;
                StorageFolder imgFolder = await appFolder.GetFolderAsync(@"Assets\class");
                StorageFile file = await imgFolder.GetFileAsync("c1.png");
                if (file != null)
                    c1Img = await file.OpenReadAsync();
                file = await imgFolder.GetFileAsync("c2.png");
                if (file != null)
                    c2Img = await file.OpenReadAsync();
                file = await imgFolder.GetFileAsync("c3.png");
                if (file != null)
                    c3Img = await file.OpenReadAsync();
                file = await imgFolder.GetFileAsync("c4.png");
                if (file != null)
                    c4Img = await file.OpenReadAsync();
                file = await imgFolder.GetFileAsync("c5.png");
                if (file != null)
                    c5Img = await file.OpenReadAsync();
            });
            task.Wait();
        }



원래 의도한대로 되지 않아서 수정할 소스이긴 하지만, 저런식으로 처리를 하면 동기를 맞출 수 있게 된다.

'Programming > C#' 카테고리의 다른 글

[UWP] number textbox  (0) 2018.05.14
[UWP] global::System.Diagnostics.Debugger.Break()  (0) 2018.05.12
[UWP] async await 그리고 동기화  (0) 2018.05.11
[UWP] File Open 관련  (0) 2018.05.08
[UWP] BreakPoint 사용불가 문제  (0) 2018.05.06
[UWP] page 이동  (0) 2018.05.04

+ Recent posts