Microsoft MVP성태의 닷넷 이야기
Task 만들때 넘겨주는 CancellationToken은 어디서 사용 되는 건가요? [링크 복사], [링크+제목 복사],
조회: 19774
글쓴 사람
김경훈
홈페이지
첨부 파일
 
(연관된 글이 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)
987에스패스트8/3/201119680비밀글쓰기가 있으면 참좋을탠대 아쉽네요 ^^ 저 한가지만더.. [5]
986에스패스트8/3/201122930안녕하세요 ^^ 이렇곧도 있군요 ~ 참좋네요 질문 한가지 여쭤볼게요 [6]
985이성환7/27/201119242P/Inovke 관련 질문입니다. [4]파일 다운로드1
983이성환7/13/201128512Mouse이벤트 관련해서 질문있습니다. [10]파일 다운로드2
982궁굼이7/12/201119519TFS2010 사용관련 [2]
981김창욱7/11/201122448주식형태의 프로그램 처럼 SQL서버의 특정 필드 데이터의 변화가 있을때 재 클라이언트가 정보를 갱신 할 수 있게 하는 방법은 없을까요? [2]
980YJ7/7/201122033App Pool idle time 과 WCF 서비스의 비동기 function 호출. [3]
979왕초보7/1/201120405Apache + IIS Redirect [2]
9776/16/201123971웹컨트롤 어느거 쓰는게 좋나요 [1]
976박성준6/13/201119411VS2008 Add-in 구현 관련 질문 [4]
972김길6/6/201121739메모리 해제 예외 처리 관련.. [2]
971강동원5/29/201119210firebird install건 [1]
970임동찬5/18/201120059ASP.net 솔루션 디버깅 관련 [1]
969이성환5/4/201121660WMI 를 사용하지 않고 하드웨어 정보를 가져올 수 없을까요? [3]
968김동미4/28/201121044안녕하세요 다시 한번 문의를 드립니다.. [2]파일 다운로드1
967임동찬4/22/201123876C# using문 관련 [9]
964김동미4/18/201121474wcf IsOneWay 속성관련 문의 입니다..
965정성태4/18/201122931    답변글 [답변]: wcf IsOneWay 속성관련 문의 입니다..
966김동미4/19/201120274        답변글 [답변]: [답변]: wcf IsOneWay 속성관련 문의 입니다.. [1]
963최재훈4/12/201119063wcf inactivityTimeout 설정시 문의 사항이 있습니다. [2]
962임동찬4/8/201118721TFS 사용관련 [1]
961임동찬4/7/201118887XSD & XML & XmlCodeGenerator [2]
960임동찬4/5/201120811XML Schema Editor [4]
959immm3/24/201118427로그인 연동 어려운 건가요? [1]
958꼭지3/3/201120748Supporting compressed request in WCF 3.5 [5]
957임동찬2/21/201121023WCF channel faulted 관련 [2]
... 61  62  63  64  [65]  66  67  68  69  70  71  72  73  74  75  ...