Hoons 닷넷 정기세미나

병걸 윤
병걸 윤RIA 개발팀 à HugeFlow
Hoons 닷넷 정기세미나
Windows 8 Sysop

    Hoons 닷넷 6기 Silverlight Sysop
    Hoons 닷넷 7기 Windows 8 Sysop
    HugeFlow 근무
    Windows 8 13인의 멘토 그룹
    해커톤 , WOWZAPP Windows 8 C# 멘토로 활동
    서울 시립대 C# 및 Windows 8 강의
    현재 Windows 8 용 멜론앱 개발중
Agenda

    C#의 변천사
    C# 5.0 (Caller)
    C#의 비동기 패턴
    C# 5.0 비동기 패턴
    Question
C# 1.0

    Managed Code
    Delegate
C# 2.0
       Boxing


Primitive   object
Type
                     Generic
Custom
Type




      Unboxing
C# 3.0

              • var query = from p in People
                            select new
     Query                  {
 Expression                     Name = p.name,
                               Age = p.age
                            };



  Lambda
 Expression   •x => x * x;
C# 4.0

    dynamic 타입 지원
    인터페이스와 대리자에 Covariance와 Contravariance를 지원
C#의 변천사


                                                  C# 5.0
                                  C# 4.0          • Asynchronous
                                  • Dynamic         Programming
                                    Programming
                         C# 3.0
                         • LINQ


              C# 2.0
              Generics


    C# 1.0
    Managed
    Code
Caller

    CallerFilePath
    CallerLineNumber
    CallerMemberName
CallerMemberName

        Caller occurs within        Member name result
  Method, property or event    호출한 메서드나 프로퍼티나 이벤트의 이름


  Constructor                  “.ctor” 문자열

  Static Constructor           “.cctor” 문자열

  Destructor                   “Finalize” 문자열
Demo
비동기 프로그래밍?

   복잡한 작업이 프로그램의 나머지 부분들과 동시에 실행할 수 있도록 구현
    하는 기술.
   주로 복잡한 작업이나 오래 걸리는 작업으로 인해 UI가 동작하지 않고 멈추
    는 현상이 발생하는 그래픽 UI가 있는 프로그램에서 사용된다.
var




var
C#에서 제공하는 비동기 패턴

    Thread
    ThreadPool
    Event based pattern
    IAsyncResult pattern
    Task based asynchronous pattern
    Etc….
Thread & ThreadPool

    닷넷에서 사용되는 가장 기본적인 Thread 객체
Event based pattern

    가장 많이 사용하는 비동기 방식                 RunWork
    이벤트를 통해 완료시점을 알 수 있음
    구현에 대한 규칙이 딱히 공식적으로 정해지지 않음

                                   Dowork




                                      Completed
IAsyncResult pattern




       BeginInvoke   AsyncCallback   EndInvoke
Task based asynchronous pattern

    반환타입에 따라 Task 또는 Task<TResult>를 반환
    접미사로 Async 사용, 만약 Async를 사용 중이면 TaskAsync 추가
async / await

    public async void GetAsync()
     {
         await HttpClient.DownloadAsync(…);
     }
Demo
Asynchronous methods automatically
transform normal code into a callback state
machine
private class btnDoWork_ClickStateMachine : IAsyncStateMachine
{
   // Member fields for preserving locals and other necessary state
   int $state;
   TaskAwaiter<string> $awaiter;
   int result;
   ...
   // Method that moves to the next state in the state machine
   public void MoveNext()
   {
       // Jump table to get back to the right statement upon resumption
       switch (this.$state)
       {
           ...
           case 2: goto Label2;
           ...
       }
       ...
       // Expansion of await ...;
       var tmp1 = ThreadPool.RunAsync(delegate { this.result = Compute(); });
       this.$awaiter = tmp1.GetAwaiter();
       if (!this.$awaiter.IsCompleted)
       {
           this.$state = 2;
           this.$awaiter.OnCompleted(MoveNext);
           return;
           Label2:
       }
       this.$awaiter.GetResult();
       ...
   }
Question
To be continue…
1 sur 24

Recommandé

Refelction의 개념과 RTTR 라이브러리 par
Refelction의 개념과 RTTR 라이브러리Refelction의 개념과 RTTR 라이브러리
Refelction의 개념과 RTTR 라이브러리ssuser7c5a40
2.5K vues11 diapositives
C#을 사용한 빠른 툴 개발 par
C#을 사용한 빠른 툴 개발C#을 사용한 빠른 툴 개발
C#을 사용한 빠른 툴 개발흥배 최
6.5K vues58 diapositives
Modern C++ 프로그래머를 위한 CPP11/14 핵심 par
Modern C++ 프로그래머를 위한 CPP11/14 핵심Modern C++ 프로그래머를 위한 CPP11/14 핵심
Modern C++ 프로그래머를 위한 CPP11/14 핵심흥배 최
46.7K vues100 diapositives
[shaderx6]8.2 3d engine tools with c++cli par
[shaderx6]8.2 3d engine tools with c++cli[shaderx6]8.2 3d engine tools with c++cli
[shaderx6]8.2 3d engine tools with c++cli종빈 오
562 vues22 diapositives
호이스팅, 클로저, IIFE par
호이스팅, 클로저, IIFE호이스팅, 클로저, IIFE
호이스팅, 클로저, IIFEChangHyeon Bae
42 vues12 diapositives
코딩인카페 C&JAVA 기초과정 C프로그래밍(2) par
코딩인카페 C&JAVA 기초과정 C프로그래밍(2)코딩인카페 C&JAVA 기초과정 C프로그래밍(2)
코딩인카페 C&JAVA 기초과정 C프로그래밍(2)유익아카데미
463 vues16 diapositives

Contenu connexe

Tendances

[C++ lab] 9. 디버깅 테크닉 par
[C++ lab] 9. 디버깅 테크닉[C++ lab] 9. 디버깅 테크닉
[C++ lab] 9. 디버깅 테크닉MinGeun Park
7K vues14 diapositives
[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호) par
[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)
[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)Sang Don Kim
2.7K vues79 diapositives
[C++ korea] effective modern c++ study item8~10 정은식 par
[C++ korea] effective modern c++ study item8~10 정은식[C++ korea] effective modern c++ study item8~10 정은식
[C++ korea] effective modern c++ study item8~10 정은식은식 정
2.6K vues15 diapositives
C++ Advanced 강의 3주차 par
C++ Advanced 강의 3주차C++ Advanced 강의 3주차
C++ Advanced 강의 3주차HyunJoon Park
451 vues57 diapositives
[C++ Korea] Effective Modern C++ Study item14 16 +신촌 par
[C++ Korea] Effective Modern C++ Study item14 16 +신촌[C++ Korea] Effective Modern C++ Study item14 16 +신촌
[C++ Korea] Effective Modern C++ Study item14 16 +신촌Seok-joon Yun
2.8K vues52 diapositives
2013 C++ Study For Students #1 par
2013 C++ Study For Students #12013 C++ Study For Students #1
2013 C++ Study For Students #1Chris Ohk
4.5K vues68 diapositives

Tendances(20)

[C++ lab] 9. 디버깅 테크닉 par MinGeun Park
[C++ lab] 9. 디버깅 테크닉[C++ lab] 9. 디버깅 테크닉
[C++ lab] 9. 디버깅 테크닉
MinGeun Park7K vues
[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호) par Sang Don Kim
[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)
[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)
Sang Don Kim2.7K vues
[C++ korea] effective modern c++ study item8~10 정은식 par 은식 정
[C++ korea] effective modern c++ study item8~10 정은식[C++ korea] effective modern c++ study item8~10 정은식
[C++ korea] effective modern c++ study item8~10 정은식
은식 정2.6K vues
[C++ Korea] Effective Modern C++ Study item14 16 +신촌 par Seok-joon Yun
[C++ Korea] Effective Modern C++ Study item14 16 +신촌[C++ Korea] Effective Modern C++ Study item14 16 +신촌
[C++ Korea] Effective Modern C++ Study item14 16 +신촌
Seok-joon Yun2.8K vues
2013 C++ Study For Students #1 par Chris Ohk
2013 C++ Study For Students #12013 C++ Study For Students #1
2013 C++ Study For Students #1
Chris Ohk4.5K vues
[C++ korea] effective modern c++ study item 7 distinguish between () and {} w... par Seok-joon Yun
[C++ korea] effective modern c++ study item 7 distinguish between () and {} w...[C++ korea] effective modern c++ study item 7 distinguish between () and {} w...
[C++ korea] effective modern c++ study item 7 distinguish between () and {} w...
Seok-joon Yun2.2K vues
More Effective C++ 4주차 par Injae Lee
More Effective C++ 4주차More Effective C++ 4주차
More Effective C++ 4주차
Injae Lee689 vues
Javascript - Function par wonmin lee
Javascript - FunctionJavascript - Function
Javascript - Function
wonmin lee1.4K vues
Secure coding-c-preprocessor-3 par Seungyong Lee
Secure coding-c-preprocessor-3Secure coding-c-preprocessor-3
Secure coding-c-preprocessor-3
Seungyong Lee126 vues
[C++ Korea] Effective Modern C++ MVA item 9 Prefer alias declarations to type... par Seok-joon Yun
[C++ Korea] Effective Modern C++ MVA item 9 Prefer alias declarations to type...[C++ Korea] Effective Modern C++ MVA item 9 Prefer alias declarations to type...
[C++ Korea] Effective Modern C++ MVA item 9 Prefer alias declarations to type...
Seok-joon Yun3.2K vues
코딩인카페 C&JAVA 기초과정 C프로그래밍(3) par 유익아카데미
코딩인카페 C&JAVA 기초과정 C프로그래밍(3)코딩인카페 C&JAVA 기초과정 C프로그래밍(3)
코딩인카페 C&JAVA 기초과정 C프로그래밍(3)
Modern C++의 타입 추론과 람다, 컨셉 par HyunJoon Park
Modern C++의 타입 추론과 람다, 컨셉Modern C++의 타입 추론과 람다, 컨셉
Modern C++의 타입 추론과 람다, 컨셉
HyunJoon Park205 vues
C++17 Key Features Summary - Ver 2 par Chris Ohk
C++17 Key Features Summary - Ver 2C++17 Key Features Summary - Ver 2
C++17 Key Features Summary - Ver 2
Chris Ohk17.6K vues
[C++ korea] Effective Modern C++ 신촌 Study Item20,21,23 par Seok-joon Yun
[C++ korea] Effective Modern C++ 신촌 Study Item20,21,23[C++ korea] Effective Modern C++ 신촌 Study Item20,21,23
[C++ korea] Effective Modern C++ 신촌 Study Item20,21,23
Seok-joon Yun1.5K vues
[C++ Korea 2nd Seminar] C++17 Key Features Summary par Chris Ohk
[C++ Korea 2nd Seminar] C++17 Key Features Summary[C++ Korea 2nd Seminar] C++17 Key Features Summary
[C++ Korea 2nd Seminar] C++17 Key Features Summary
Chris Ohk10.5K vues
[C++ korea] Effective Modern C++ study item 19 use shared ptr for shared owne... par Seok-joon Yun
[C++ korea] Effective Modern C++ study item 19 use shared ptr for shared owne...[C++ korea] Effective Modern C++ study item 19 use shared ptr for shared owne...
[C++ korea] Effective Modern C++ study item 19 use shared ptr for shared owne...
Seok-joon Yun3.1K vues

Similaire à Hoons 닷넷 정기세미나

Effective c++(chapter 5,6) par
Effective c++(chapter 5,6)Effective c++(chapter 5,6)
Effective c++(chapter 5,6)문익 장
726 vues82 diapositives
[Td 2015]windows, linux, mac 신경 안 쓴다. .net 2015와 더더 좋아지는 c# 살짝 훔쳐보기(김명신) par
[Td 2015]windows, linux, mac 신경 안 쓴다. .net 2015와 더더 좋아지는 c# 살짝 훔쳐보기(김명신)[Td 2015]windows, linux, mac 신경 안 쓴다. .net 2015와 더더 좋아지는 c# 살짝 훔쳐보기(김명신)
[Td 2015]windows, linux, mac 신경 안 쓴다. .net 2015와 더더 좋아지는 c# 살짝 훔쳐보기(김명신)Sang Don Kim
3.8K vues58 diapositives
Javascript 조금 더 잘 알기 par
Javascript 조금 더 잘 알기Javascript 조금 더 잘 알기
Javascript 조금 더 잘 알기jongho jeong
76 vues34 diapositives
Tech Update - The Future of .NET Framework (김명신 부장) par
Tech Update - The Future of .NET Framework (김명신 부장)Tech Update - The Future of .NET Framework (김명신 부장)
Tech Update - The Future of .NET Framework (김명신 부장)Eunbee Song
1.9K vues57 diapositives
20201121 코드 삼분지계 par
20201121 코드 삼분지계20201121 코드 삼분지계
20201121 코드 삼분지계Chiwon Song
138 vues20 diapositives
[KGC2014] 두 마리 토끼를 잡기 위한 C++ - C# 혼합 멀티플랫폼 게임 아키텍처 설계 par
[KGC2014] 두 마리 토끼를 잡기 위한 C++ - C#  혼합 멀티플랫폼 게임 아키텍처 설계[KGC2014] 두 마리 토끼를 잡기 위한 C++ - C#  혼합 멀티플랫폼 게임 아키텍처 설계
[KGC2014] 두 마리 토끼를 잡기 위한 C++ - C# 혼합 멀티플랫폼 게임 아키텍처 설계Sungkyun Kim
17.4K vues48 diapositives

Similaire à Hoons 닷넷 정기세미나(20)

Effective c++(chapter 5,6) par 문익 장
Effective c++(chapter 5,6)Effective c++(chapter 5,6)
Effective c++(chapter 5,6)
문익 장726 vues
[Td 2015]windows, linux, mac 신경 안 쓴다. .net 2015와 더더 좋아지는 c# 살짝 훔쳐보기(김명신) par Sang Don Kim
[Td 2015]windows, linux, mac 신경 안 쓴다. .net 2015와 더더 좋아지는 c# 살짝 훔쳐보기(김명신)[Td 2015]windows, linux, mac 신경 안 쓴다. .net 2015와 더더 좋아지는 c# 살짝 훔쳐보기(김명신)
[Td 2015]windows, linux, mac 신경 안 쓴다. .net 2015와 더더 좋아지는 c# 살짝 훔쳐보기(김명신)
Sang Don Kim3.8K vues
Javascript 조금 더 잘 알기 par jongho jeong
Javascript 조금 더 잘 알기Javascript 조금 더 잘 알기
Javascript 조금 더 잘 알기
jongho jeong76 vues
Tech Update - The Future of .NET Framework (김명신 부장) par Eunbee Song
Tech Update - The Future of .NET Framework (김명신 부장)Tech Update - The Future of .NET Framework (김명신 부장)
Tech Update - The Future of .NET Framework (김명신 부장)
Eunbee Song1.9K vues
20201121 코드 삼분지계 par Chiwon Song
20201121 코드 삼분지계20201121 코드 삼분지계
20201121 코드 삼분지계
Chiwon Song138 vues
[KGC2014] 두 마리 토끼를 잡기 위한 C++ - C# 혼합 멀티플랫폼 게임 아키텍처 설계 par Sungkyun Kim
[KGC2014] 두 마리 토끼를 잡기 위한 C++ - C#  혼합 멀티플랫폼 게임 아키텍처 설계[KGC2014] 두 마리 토끼를 잡기 위한 C++ - C#  혼합 멀티플랫폼 게임 아키텍처 설계
[KGC2014] 두 마리 토끼를 잡기 위한 C++ - C# 혼합 멀티플랫폼 게임 아키텍처 설계
Sungkyun Kim17.4K vues
카사 공개세미나1회 W.E.L.C. par Ryan Park
카사 공개세미나1회  W.E.L.C.카사 공개세미나1회  W.E.L.C.
카사 공개세미나1회 W.E.L.C.
Ryan Park1.3K vues
NDC 2011, 네트워크 비동기 통신, 합의점의 길목에서 par tcaesvk
NDC 2011, 네트워크 비동기 통신, 합의점의 길목에서NDC 2011, 네트워크 비동기 통신, 합의점의 길목에서
NDC 2011, 네트워크 비동기 통신, 합의점의 길목에서
tcaesvk991 vues
The Future of .NET and C# par 명신 김
The Future of .NET and C#The Future of .NET and C#
The Future of .NET and C#
명신 김138 vues
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기 par Jaeseung Ha
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
Jaeseung Ha4.8K vues
파이썬 데이터과학 레벨1 - 초보자를 위한 데이터분석, 데이터시각화 (2020년 이태영) par Tae Young Lee
파이썬 데이터과학 레벨1 - 초보자를 위한 데이터분석, 데이터시각화 (2020년 이태영) 파이썬 데이터과학 레벨1 - 초보자를 위한 데이터분석, 데이터시각화 (2020년 이태영)
파이썬 데이터과학 레벨1 - 초보자를 위한 데이터분석, 데이터시각화 (2020년 이태영)
Tae Young Lee743 vues
[네이버오픈소스세미나] Pinpoint를 이용해서 서버리스 플랫폼 Apache Openwhisk 트레이싱하기 - 오승현 par NAVER Engineering
[네이버오픈소스세미나] Pinpoint를 이용해서 서버리스 플랫폼 Apache Openwhisk 트레이싱하기 - 오승현[네이버오픈소스세미나] Pinpoint를 이용해서 서버리스 플랫폼 Apache Openwhisk 트레이싱하기 - 오승현
[네이버오픈소스세미나] Pinpoint를 이용해서 서버리스 플랫폼 Apache Openwhisk 트레이싱하기 - 오승현
NAVER Engineering7.4K vues
GKAC 2015 Apr. - Battery, 안드로이드를 위한 쉬운 웹 API 호출 par GDG Korea
GKAC 2015 Apr. - Battery, 안드로이드를 위한 쉬운 웹 API 호출GKAC 2015 Apr. - Battery, 안드로이드를 위한 쉬운 웹 API 호출
GKAC 2015 Apr. - Battery, 안드로이드를 위한 쉬운 웹 API 호출
GDG Korea2.1K vues
Jdk(java) 7 - 5. invoke-dynamic par knight1128
Jdk(java) 7 - 5. invoke-dynamicJdk(java) 7 - 5. invoke-dynamic
Jdk(java) 7 - 5. invoke-dynamic
knight11282.5K vues
파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영) par Tae Young Lee
파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)
파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)
Tae Young Lee22.9K vues
김민욱, (달빛조각사) 엘릭서를 이용한 mmorpg 서버 개발, NDC2019 par min woog kim
김민욱, (달빛조각사) 엘릭서를 이용한 mmorpg 서버 개발, NDC2019김민욱, (달빛조각사) 엘릭서를 이용한 mmorpg 서버 개발, NDC2019
김민욱, (달빛조각사) 엘릭서를 이용한 mmorpg 서버 개발, NDC2019
min woog kim3.2K vues
About Visual C++ 10 par 흥배 최
About  Visual C++ 10About  Visual C++ 10
About Visual C++ 10
흥배 최1.5K vues
Ai C#세미나 par Astin Choi
Ai C#세미나Ai C#세미나
Ai C#세미나
Astin Choi1.7K vues

Dernier

클라우드 네이티브 전환 요소 및 성공적인 쿠버네티스 도입 전략 par
클라우드 네이티브 전환 요소 및 성공적인 쿠버네티스 도입 전략클라우드 네이티브 전환 요소 및 성공적인 쿠버네티스 도입 전략
클라우드 네이티브 전환 요소 및 성공적인 쿠버네티스 도입 전략Open Source Consulting
111 vues25 diapositives
컴포넌트 설계 par
컴포넌트 설계컴포넌트 설계
컴포넌트 설계Wonjun Hwang
8 vues21 diapositives
해커가 되고 싶은 자는 나에게... 정보보안 입문과 길 찾기 par
해커가 되고 싶은 자는 나에게... 정보보안 입문과 길 찾기해커가 되고 싶은 자는 나에게... 정보보안 입문과 길 찾기
해커가 되고 싶은 자는 나에게... 정보보안 입문과 길 찾기Jinkyoung Kim
46 vues139 diapositives
CES 처음 가는 분을 위한 가이드 par
CES 처음 가는 분을 위한 가이드CES 처음 가는 분을 위한 가이드
CES 처음 가는 분을 위한 가이드Minsuk Lee
650 vues31 diapositives
성능 테스트 par
성능 테스트성능 테스트
성능 테스트Wonjun Hwang
8 vues13 diapositives
Exploring Deep Learning Acceleration Technology Embedded in LLMs par
Exploring Deep Learning Acceleration Technology Embedded in LLMsExploring Deep Learning Acceleration Technology Embedded in LLMs
Exploring Deep Learning Acceleration Technology Embedded in LLMsTae Young Lee
26 vues53 diapositives

Dernier(7)

클라우드 네이티브 전환 요소 및 성공적인 쿠버네티스 도입 전략 par Open Source Consulting
클라우드 네이티브 전환 요소 및 성공적인 쿠버네티스 도입 전략클라우드 네이티브 전환 요소 및 성공적인 쿠버네티스 도입 전략
클라우드 네이티브 전환 요소 및 성공적인 쿠버네티스 도입 전략
해커가 되고 싶은 자는 나에게... 정보보안 입문과 길 찾기 par Jinkyoung Kim
해커가 되고 싶은 자는 나에게... 정보보안 입문과 길 찾기해커가 되고 싶은 자는 나에게... 정보보안 입문과 길 찾기
해커가 되고 싶은 자는 나에게... 정보보안 입문과 길 찾기
Jinkyoung Kim46 vues
CES 처음 가는 분을 위한 가이드 par Minsuk Lee
CES 처음 가는 분을 위한 가이드CES 처음 가는 분을 위한 가이드
CES 처음 가는 분을 위한 가이드
Minsuk Lee650 vues
Exploring Deep Learning Acceleration Technology Embedded in LLMs par Tae Young Lee
Exploring Deep Learning Acceleration Technology Embedded in LLMsExploring Deep Learning Acceleration Technology Embedded in LLMs
Exploring Deep Learning Acceleration Technology Embedded in LLMs
Tae Young Lee26 vues

Hoons 닷넷 정기세미나

  • 2. Windows 8 Sysop  Hoons 닷넷 6기 Silverlight Sysop  Hoons 닷넷 7기 Windows 8 Sysop  HugeFlow 근무  Windows 8 13인의 멘토 그룹  해커톤 , WOWZAPP Windows 8 C# 멘토로 활동  서울 시립대 C# 및 Windows 8 강의  현재 Windows 8 용 멜론앱 개발중
  • 3. Agenda  C#의 변천사  C# 5.0 (Caller)  C#의 비동기 패턴  C# 5.0 비동기 패턴  Question
  • 4. C# 1.0  Managed Code  Delegate
  • 5. C# 2.0 Boxing Primitive object Type Generic Custom Type Unboxing
  • 6. C# 3.0 • var query = from p in People select new Query { Expression Name = p.name, Age = p.age }; Lambda Expression •x => x * x;
  • 7. C# 4.0  dynamic 타입 지원  인터페이스와 대리자에 Covariance와 Contravariance를 지원
  • 8. C#의 변천사 C# 5.0 C# 4.0 • Asynchronous • Dynamic Programming Programming C# 3.0 • LINQ C# 2.0 Generics C# 1.0 Managed Code
  • 9. Caller  CallerFilePath  CallerLineNumber  CallerMemberName
  • 10. CallerMemberName Caller occurs within Member name result Method, property or event 호출한 메서드나 프로퍼티나 이벤트의 이름 Constructor “.ctor” 문자열 Static Constructor “.cctor” 문자열 Destructor “Finalize” 문자열
  • 11. Demo
  • 12. 비동기 프로그래밍?  복잡한 작업이 프로그램의 나머지 부분들과 동시에 실행할 수 있도록 구현 하는 기술.  주로 복잡한 작업이나 오래 걸리는 작업으로 인해 UI가 동작하지 않고 멈추 는 현상이 발생하는 그래픽 UI가 있는 프로그램에서 사용된다.
  • 14. C#에서 제공하는 비동기 패턴  Thread  ThreadPool  Event based pattern  IAsyncResult pattern  Task based asynchronous pattern  Etc….
  • 15. Thread & ThreadPool  닷넷에서 사용되는 가장 기본적인 Thread 객체
  • 16. Event based pattern  가장 많이 사용하는 비동기 방식 RunWork  이벤트를 통해 완료시점을 알 수 있음  구현에 대한 규칙이 딱히 공식적으로 정해지지 않음 Dowork Completed
  • 17. IAsyncResult pattern BeginInvoke AsyncCallback EndInvoke
  • 18. Task based asynchronous pattern  반환타입에 따라 Task 또는 Task<TResult>를 반환  접미사로 Async 사용, 만약 Async를 사용 중이면 TaskAsync 추가
  • 19. async / await  public async void GetAsync() { await HttpClient.DownloadAsync(…); }
  • 20. Demo
  • 21. Asynchronous methods automatically transform normal code into a callback state machine
  • 22. private class btnDoWork_ClickStateMachine : IAsyncStateMachine { // Member fields for preserving locals and other necessary state int $state; TaskAwaiter<string> $awaiter; int result; ... // Method that moves to the next state in the state machine public void MoveNext() { // Jump table to get back to the right statement upon resumption switch (this.$state) { ... case 2: goto Label2; ... } ... // Expansion of await ...; var tmp1 = ThreadPool.RunAsync(delegate { this.result = Compute(); }); this.$awaiter = tmp1.GetAwaiter(); if (!this.$awaiter.IsCompleted) { this.$state = 2; this.$awaiter.OnCompleted(MoveNext); return; Label2: } this.$awaiter.GetResult(); ... }

Notes de l'éditeur

  1. 콜러에 대한 간단한 데모를 먼저 보시겠습니다.