20
닷넷과 WINRT의 비동기 패턴 훈스닷넷 WINDOWS 8 시삽 윤병걸

닷넷과 Win rt의 비동기 패턴

  • Upload
    -

  • View
    1.281

  • Download
    8

Embed Size (px)

Citation preview

Page 1: 닷넷과 Win rt의 비동기 패턴

닷넷과 WINRT의 비동기 패턴

훈스닷넷

WINDOWS 8 시삽

윤병걸

Page 2: 닷넷과 Win rt의 비동기 패턴

WINDOWS 8 PLATFORM

Page 3: 닷넷과 Win rt의 비동기 패턴

비동기 프로그래밍 모델

.NET Framework

•Task

•Task<T>

WinRT

• IAsyncOperation<T>

• IAsyncAction

Page 4: 닷넷과 Win rt의 비동기 패턴

LANGUAGE PROJECTIONS

Page 5: 닷넷과 Win rt의 비동기 패턴

TASK, TASK<T>

• TASKCOMPLETIONSOURCE<TRESULT>

• CONFIGUREAWAIT()

• CANCELLATIONTOKENSOURCE

• WHENANY(), WHENALL()

• WAITALL(), WAITANY()

• ETC…

Page 6: 닷넷과 Win rt의 비동기 패턴

TASKCOMPLETIONSOURCE<TRESULT>

• TASK를 만드는 일반적인 매커니즘

• SETERROR ()

• SETCANCEL()

• SETRESULT()

Page 7: 닷넷과 Win rt의 비동기 패턴

WinRTSynchronizationContext

OnCompleted(Action continuation)

Post()

Continuation

delegate

UI Thread

Message Pump Message Queue

Async

Page 8: 닷넷과 Win rt의 비동기 패턴

CONFIGUREAWAIT(TRUE OR FALSE)

• 컴파일러의 마샬링 작업 수행여부를 결정

• TRUE : (DEFAULT) 마샬링 작업 수행

• FALSE : 마샬링 작업 수행하지 않음

Page 9: 닷넷과 Win rt의 비동기 패턴

CANCELLATIONTOKENSOURCE

• 현재 수행중인 비동기 작업에 취소요청

• TOKEN을 부여할 때마다 새로운 복사본을 생성

• 작업을 취소하는 경우 대리자에서 THROWIFCANCELLATIONREQUESTED를 호출하는 것을

권장.

Page 10: 닷넷과 Win rt의 비동기 패턴

IPROGRESS

• TASK에서 진행률을 표시하는데 사용

Page 11: 닷넷과 Win rt의 비동기 패턴

COMBINATORS

• WHENALL, WHENANY

• WAITALL, WAITANY

• CONTINUEWITH

Page 12: 닷넷과 Win rt의 비동기 패턴

WINRT 비동기 기본 형식

Page 13: 닷넷과 Win rt의 비동기 패턴

ASYNCINFO.RUN

• TASK를 IASYNCOPERATION형으로 변환

• 비동기 작업에 취소를 지원할 수 있음

• 비동기 작업에 진행률 표시를 지원할 수 있음

Page 14: 닷넷과 Win rt의 비동기 패턴

IASYNCOPERATION 구현

Page 15: 닷넷과 Win rt의 비동기 패턴

ASASYNCOPERATION의 구현

Page 16: 닷넷과 Win rt의 비동기 패턴

STATUS 비교

From TaskStatus To AsyncStatus

RanToCompletion Completed

Faulted Error

Canceled Canceled

All other values & cancellation was requested Canceled

All other values & cancellation was not requested Started

Page 17: 닷넷과 Win rt의 비동기 패턴

IAsyncoperation

Task

WinRT용

라이브러리를 제작

한다면

IAsyncOperation타입을 반환해야 함.

IAsyncOperation보다 많은 제공.

AsAsyncOperation()

AsTask()

Page 18: 닷넷과 Win rt의 비동기 패턴

REFERENCE

• HTTP://BLOGS.MSDN.COM/B/WINDOWSAPPDEV/ARCHIVE/2012/04/24/DIVING-DEEP-WITH-

WINRT-AND-AWAIT.ASPX

• HTTP://BLOGS.MSDN.COM/B/WINDOWSAPPDEV/ARCHIVE/2012/06/14/EXPOSING-NET-TASKS-AS-WINRT-ASYNCHRONOUS-OPERATIONS.ASPX

• HTTP://MSDN.MICROSOFT.COM/EN-US/LIBRARY/DD997364.ASPX

• HTTP://MSDN.MICROSOFT.COM/EN-US/MAGAZINE/FF959203.ASPX

Page 19: 닷넷과 Win rt의 비동기 패턴

QUESTION

Page 20: 닷넷과 Win rt의 비동기 패턴

THANK YOU