Microsoft MVP성태의 닷넷 이야기
Task 만들때 넘겨주는 CancellationToken은 어디서 사용 되는 건가요? [링크 복사], [링크+제목 복사],
조회: 17448
글쓴 사람
김경훈
홈페이지
첨부 파일
 
(연관된 글이 1개 있습니다.)

Task.Run (Action action, CancellationToken cancellationToken) 여기에 넘겨준 토큰은 도대체 어디서 사용하며 왜 넘겨주는지 모르겠네요

대부분 아래와 비슷하게 예제로 나와있던데

private void Example(CancellationToken token)
{
    while(true)
    {
        if(token.IsCancellationRequested)
        {
            break;
        }
    }
}

private Test()
{
    CancellationTokenSource cts = new CancellationTokenSource();
    Task task = Task.Run(() => Example(cts.Token), cts.Token);
}


Run인자에서 두번째로 넘긴 저 토큰은 어디서 사용되며 무슨 역할을 하는 건가요?


[연관 글]






[최초 등록일: ]
[최종 수정일: 5/8/2019]


비밀번호

댓글 작성자
 



2019-05-08 08시23분
다음의 글을 참고하세요.

C# - 비동기 호출을 취소하는 CancellationToken의 간단한 예제 코드
; http://www.sysnet.pe.kr/2/0/11888
정성태
2019-05-08 09시48분
[김경훈] CancellationToken용도는 알고 있는데 제가 궁금한것은 Task task = Task.Run(() => Example(cts.Token), cts.Token); 이런식으로 Run의 두번째 인자에 넘겨진 토큰은 어디서 사용되는지가 궁금합니다
() => Example(cts.Token) 이렇게 델리게이트를 만들었으니 같은 토큰이라도 Run의 두번째 인자로 넘긴 토큰은 Example 메서드로 전달되는건 아니지 않나요?
저 두번째 인자에 넘겨진 토큰이 어디서 사용되고 무슨 역할을 하는지를 모르겠습니다. 검색을 해봐도 Task 내부적으로 사용된다는 말이 있던데 정확하게 설명된게 안보이네요
저게 너무 궁금해서 다른 공부 할것들이 눈에 들어오지 않네요 ㅠㅠ
[guest]
2019-05-08 10시09분
Task는 스레드 풀의 스레드를 빌려서 해당 작업을 합니다. CancellationToken을 넘겼다면 당연히 작업을 취소하는 역할을 합니다. 그런데 굳이 2군데에 모두 넘긴 이유라면, 스레드 풀의 여유 스레드가 없어서 아직 작업에 스레드가 할당되기 이전에도 취소할 수 있게 됩니다. 즉, 큐잉되고 있는 작업 항목도 취소해 제거할 수 있는 것입니다.

만약 Task.Run만으로 무조건 실행되는 상황이라면 작업 내부에서의 체크만 하는 것으로도 충분할 것입니다.
정성태
2019-05-09 09시33분
[김경훈] 아 그렇군요 감사합니다^^ 속이 시원하네요~~
[guest]

... 61  62  63  64  65  66  67  68  69  70  [71]  72  73  74  75  ...
NoWriterDateCnt.TitleFile(s)
787궁금이2/2/200915560TFS 관련하여 질문드리고자 합니다. [2]
786맨날맑음1/30/200916774WPF를 SmartClient로 배포할순 없을까요? [2]
785정성우12/16/200815733Vista 환경에서 VB6로 개발한 어플리케이션이 IE 통해서는 런칭이 안됩니다.. [4]
783서광원11/20/200816450.NET 어셈블리를 COM에서 사용하도록 변경 했을때 배포는 어떻게 해야 하나요? [3]
782김용환10/14/200816908웹서비스에서 캐시를 사용하고 싶습니다. [3]
781이수정9/5/200815015visual studio 2008 관련 질문입니다. [2]
776신현창8/5/200815231VS2005로 실행시 갑자기 COM+ 등록이 안됩니다. [1]
775땡초7/21/200815571조언을 구하고저 합니다. [2]
774남호진7/19/200816529Visual Studio 2005나 2008에서 서버탐색기에연결된 데이터에서 정보를 끌어... [2]
773지워니7/17/200818311웹서비스로 db2의 데이터가 오질 않아요. [1]
984이영구7/16/201118205    답변글 [답변]: 웹서비스로 db2의 데이터가 오질 않아요.
772다자래7/15/200815832스레드와 이벤트를 이용해서 mssql 서버의 저장프로시져의 레코드 진행률을 표현하는 프로그래스바를 구현하려고하는데....막막 [1]
771guest6/26/200815576[WCF] Self host 만드는 방법. [2]파일 다운로드1
770조조5/27/200815203스마트클라이언트에서 stand-alone 형태를 임베디드형태로 변환시 문제.. [1]
769제영한5/20/200815574배포프로젝트에 대한 조언을 구합니다. [2]
767김형중5/6/200816374RMclock 관련 문의 입니다. [1]
766정성태4/28/200817307[데브피아 Q&A 모음] 2008-04-21 ~ 2008-04-24
764정성태4/21/200818102[데브피아 Q&A 모음] 2008-04-14 ~ 2008-04-18 [2]
763단테4/17/200815557COM 객체 생성하는 방법
765정성태4/21/200816241    답변글 [답변]: CreateInstance를 부르시는 것이 추천됩니다.
762이민지4/16/200819338ClickOnce 실행 시 Internet Explorer 7.0에서 에러 메세지 출력 [1]
761이민지4/16/200815936ClickOnce로 배포를 하다가 생긴 문제에 대해 질문드립니다. [1]
760한귀순4/15/200816811DataSet 의 designer.cs [2]
759정성태4/14/200817232[데브피아 Q&A 모음] 2008-04-04 ~ 2008-04-12
7573/28/2008148582008 Server, Vista 에서 RDS 지원? [4]
756손승휘3/24/200818733Microsoft Web Browser OCX 부분이 안전하지 않는 ACTIVEX로 IE에서 인식되어는 점 [1]
... 61  62  63  64  65  66  67  68  69  70  [71]  72  73  74  75  ...