Microsoft MVP성태의 닷넷 이야기
TaskAwaiter 구현 질문 입니다. [링크 복사], [링크+제목 복사],
조회: 12552
글쓴 사람
C#스터디
홈페이지
첨부 파일
 

ICriticalNotifyCompletion 및 INotifyCompletion

위 두개의 인터페이스를 상속 받아서 TaskAwaiter 구조체를 구현 하였습니다.

TaskAwaiter 구조체는 GetAwaiter() 메서드를 통해 사용되고


자체적으로 커스텀된 Task를 구현하였는데요

궁금한 것이

ICriticalNotifyCompletion, INotifyCompletion 둘중 어떤 것을 상속받아 구현해야 하는지 궁금합니다.

일단 두개 다 상속받아 처리했을땐 항상 UnsafeOnCompleted(Action continuation) 메서드만 호출되는 것 같았습니다.

또한 INotifyCompletion만 구현 했을 경우는 당현하겠지만 OnCompleted(Action continuation) 메서드만 호출 되었구요

어떤 상황에서 둘다 사용해야 하는지 또는 어떤걸 사용 해야 하는지 궁금합니다.








[최초 등록일: ]
[최종 수정일: 1/12/2022]


비밀번호

댓글 작성자
 



2022-01-12 04시20분
도움말을 보면,

ICriticalNotifyCompletion.UnsafeOnCompleted(Action) Method
; https://learn.microsoft.com/en-us/dotnet/api/system.runtime.compilerservices.icriticalnotifycompletion.unsafeoncompleted

다음과 같은 주석을 볼 수 있습니다.

Unlike OnCompleted, UnsafeOnCompleted doesn't have to propagate ExecutionContext information.

그리고 저 말의 의미는 아래의 글을 읽어보시면 이해가 될 것입니다.

HttpContext.Current를 통해 이해하는 CallContext와 ExecutionContext
; https://www.sysnet.pe.kr/2/0/1608#unsafe_tp

그런데, 대단하시군요. ^^ 저는 예제 삼아 구현은 했어도,

C# - await을 Task 타입이 아닌 사용자 정의 타입에 적용하는 방법
; https://www.sysnet.pe.kr/2/0/11456

그걸 현실적으로 사용해 보려는 노력까지는 안 했습니다.
정성태

1  2  3  4  5  6  7  [8]  9  10  11  12  13  14  15  ...
NoWriterDateCnt.TitleFile(s)
5783구직자1/7/202310082C#개발자 구인광고와 초급개발자 [3]파일 다운로드1
5782Sqli...1/5/202310895윈도우11 노트북에서 exe(Sqlite)만들어 윈도우 7 PC에 설치 시 [5]
5781List맨1/5/202310946List.Add("newobj") 속도는 빠른 편인지요? [11]
5780임세1/3/202312519C# 프로그래밍 10 책 구매한 사람입니다. 3부 자료는 어디서 다운 받을 수 있나요? [4]
5779이건우1/2/202310742안녕하십니까 루프안에서 메세지처리에 관하여 질문드립니다! [2]
5778이건우12/30/202212014안녕하세요 c#에서 dll참조 관련 질문드립니다. [4]
5777감사합니...12/29/202210796UI Thread에 Invoke 처리관련 궁금합니다. [3]
5776pdf맨12/28/202210393C# MouseUp Event + pdf [10]
5775민성12/28/202210110안녕하세요 Class 관련해서 예외처리를 하나로 받아낼수 있는 방법 [1]
5774중급12/27/202211384중급개발자란 어느 수준인지요? [4]
5773김영식12/26/202210394c# 압축파일 읽어 올 때 BinaryRead 한글 처리 문제 [1]
5772눈송이12/26/202211090Excel VSTO 는 왜 Net Core, Net 5, 6 버전을 사용하지 않나요? [2]
5771김훈12/26/202210947c# .net client application 망분리(내부망,외부망) 환경에서 의문의 외부사이트 호출 대기 [2]
5770lsh12/26/202210325클라우디움안에 있는 파일을 File.Copy 하고싶은데 코드로는 접근을 못하나요? [1]
5769울타리12/20/202210808Active Directory 2012R2 2016 또는 2019 마이그렝션 문의 드립니다. [1]
5768c++12/14/202213065Thread를 사용한 C++ DLL에 관련된 질문입니다. [6]파일 다운로드2
5767민성12/9/202210734안녕하세요 ashx로 화일을 저장하고 화일명을 리턴하는데요 [1]
5766김명훈12/9/202210882웹브라우저에서 묻지 않고 바로 다운로드 [2]
5765hong12/1/202211269Winform(.Net6) 클라이언트에서 SignalR Core 웹서버에 접속시 인증서 문제 [3]파일 다운로드1
5764요한11/30/202211446c++ 동일한 객체인지 비교 방법문의 [2]
5763고필석11/30/202210653시작하자마자 비정상 종료하는 프로세스에 대한 문제 해결 조언 요청 드립니다. [3]
5762흰털너부리11/30/202210686wpf mvvm ui update 로딩중 표시 [1]
5761민성11/29/202210601죄송하지만 한가지만 더 여쭈어 보겠습니다 [1]
5760민성11/29/202210543안녕하세요 [2]
5759문정환11/28/202210724c# socket 통신할때 빅엔디언으로 바꿔줘야 하나요? [1]
5758라떼11/28/202213180Linux 에서 winform UI 어플리케이션 실행하기 [3]
1  2  3  4  5  6  7  [8]  9  10  11  12  13  14  15  ...