부모글 보이기/감추기 AD BLOCK 해제 요청 이 글에는 광고가 많이 들어가 있지 않습니다. adblock을 해제하셔도 글을 읽는데 그다지 부담이 없으니 해제를 부탁드립니다. (연관된 글이 1개 있습니다.) https://devblogs.microsoft.com/dotnet/understanding-the-whys-whats-and-whens-of-valuetask/ 이 게시글이나 msdn 보면 ValueTask에 대해서 multiple await가 안좋다 하는데 제가 다음과 같이 var t = GetValue(); await t; await t; private async ValueTask<int> GetValue() { if (cachedValue is null) { await Task.Delay(500); cachedValue = 5; } return cachedValue.Value; } 이러면 CA2012 경고가 나오긴 하는데 작동은 잘됩니다. 어떠한 케이스에서 multiple await를 쓰면 예외가 터지는건가요? [이전 글] 안녕하세요 c# FCM v1으로 푸시는 보내는 예제와 방법을 여쭈어 봐도 될까요 [연관 글] 닷넷: 2335. C# - 간단하게 구현해 보는 IValueTaskSource 예제 [최초 등록일: 6/10/2025] [최종 수정일: 6/10/2025] 비밀번호 댓글 작성자 2025-06-11 04시00분 해당 글을 잠시 읽어보니까, 그 글에 답이 잘 나오는군요. ^^multiple await을 할 때 예외가 발생할 수 있는 경우는 ValueTask가 IValueTaskSource를 구현한 개체를 감싸서 반환한 경우입니다. 예제로 든 경우는 TResult를 반환한 값이기 때문에 경고는 나와도 문제는 없습니다.참고로, IValueTaskSource를 구현한 개체를 반환하더라도 문제가 안 되는 경우도 있습니다. 문제가 되는 경우는, 해당 문서에서도 예를 들어 나오지만 Pool에 관리가 된 경우입니다. 가령 예제에서 GetValue가 풀링된 개체를 담은 ValueTask를 반환했다고 가정하면 두 번째 await 호출 시에 이미 해당 개체는 풀에 반환돼 다른 값을 가지고 있거나 반환되면서 값이 초기화돼 정상적인 값을 구할 수 없게 될 것입니다.게다가, IValueTaskSource를 감싼 경우라면 await을 분리해서 호출하는 경우에도 문제가 발생할 수 있습니다. 즉, 다음과 같이 직접 호출하는 식으로 바꿔야 합니다.var t = await GetValue(); // 이렇게 메서드 호출에 직접 await 사용왜냐하면, IValueTaskSource가 반환하면서 직접적인 값을 ValueTask<TResult>의 TResult를 '값 복사'해서 반환해 사용해야 안전한 것입니다. 그렇지 않고 ValueTask<TResult>로 받고 이후에 await을 하게 되면 위에서 설명했던 것과 마찬가지로 풀링에 이미 반환돼 다른 목적으로 사용될 수 있으므로 오동작을 할 수 있는 것입니다. 정성태 ... 31 32 33 34 35 [36] 37 38 39 40 41 42 43 44 45 ... NoWriterDateCnt.TitleFile(s) 4997초보개발자6/5/201830888C++ dll C#에서 사용하는데 보호된 메모리 오류떠요 한번만 도와주세요ㅜ [1]14996swc6/5/201817366현업에서 주로 사용하는 DB업데이트 방법 질문입니다. [1]14993학생6/3/201815278질문 드립니다 [1]4991최진안5/24/201815777Credential Provider 질문 [2]4990heyg...5/21/201816038Sybase Adaptive Server Anywhere 6 버전에 대한 질문입니다. [9]4989강한음5/18/201818997clickonce 배포 후 실행 무응답 [4]4988C#7....5/17/201814731dynamic 키워드를 사용한 객체 핸들링에 대해서 여쭤보려고 합니다. [1]4987포플러5/14/201816629닥터왓슨 로그 - c0000005 (액세스 위반) 분석 부탁드려도 될까요? [2]4986익명5/14/201818603비주얼 스튜디오 wpf 프로젝트에서 어떻게 하면 exe파일과 실행에 필요한 파일들을 분리해서 정리해서 디렉토리로 묶을 수 있을까요? [4]4985대구개발자5/7/201816122새로운 폴더만 "이름 없는 파일" 오류 [1]4984안중언5/6/201816895교재 143page [1]4983익명5/4/201827333(wpf) 다른 컴퓨터에서 사용하면 자꾸 ('CefSharp.Core.dll' 또는 여기에 종속되어 있는 파일이나 어셈블리 중 하나를 로드할 수 없습니다)라고 떠요.ㅠㅠ [5]4982Soul...4/27/201817303MFC ActiveX 컨트롤 안에 있는 C# ActiveX 컨트롤 포인터 얻기 [4]4981대전박4/25/201815982WPF IValueConverter 를 구현해서 StaticResource로 사용할때요 [1]4980대전박4/23/201817447WPF OS버전 따라 Style 적용이 안되는 프로퍼티가 있을수 있나요? [2]4979초보개발자4/18/201822226C# 프레임워크 버전이 다른 DLL끼리의 사용 [7]14977Soul...4/17/201816856WebBrowser 컨트롤 Script 통신 문제 [3]4976맹가이버4/14/201817838윈도우 서비스 프로그램에서 응용프로그램 호출하는 법 [1]4975lemo...4/11/201818395안녕하세요 네이버로그인관련 질문드립니다. [2]4973홍길동4/6/201816186ebook 출간 계획은 없으신가요? [2]4978홍길동4/17/201815895 [답변]: ebook 출간 계획은 없으신가요?4972dwkim4/3/201816726EasyHook 관련 질문 [4]4968최홍준3/30/201815725Windows 7 Credential Provider Android와 연동 [1]4967이대희3/30/201816435비주얼 스튜디오 설치 워크로드 중에 ".NET Core 플랫폼 간 개발" 이건 뭐하는 것인지요. [1]4965이대희3/30/201816100자마린 설치후 안드로이드 프로젝트 생성시 디자이너가 없다는 에러가 발생합니다. [3]4969이대희3/31/201816687 [답변]: 자마린 설치후 안드로이드 프로젝트 생성시 디자이너가 없다는 에러가 발생합니다.2 ... 31 32 33 34 35 [36] 37 38 39 40 41 42 43 44 45 ...