Microsoft MVP성태의 닷넷 이야기
글쓴 사람
김경훈
홈페이지
첨부 파일
 
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 내부적으로 사용된다는 말이 있던데 정확하게 설명된게 안보이네요
저게 너무 궁금해서 다른 공부 할것들이 눈에 들어오지 않네요 ㅠㅠ
[손님]
2019-05-08 10시09분
Task는 스레드 풀의 스레드를 빌려서 해당 작업을 합니다. CancellationToken을 넘겼다면 당연히 작업을 취소하는 역할을 합니다. 그런데 굳이 2군데에 모두 넘긴 이유라면, 스레드 풀의 여유 스레드가 없어서 아직 작업에 스레드가 할당되기 이전에도 취소할 수 있게 됩니다. 즉, 큐잉되고 있는 작업 항목도 취소해 제거할 수 있는 것입니다.

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

1  2  3  4  5  6  7  8  9  10  11  [12]  13  14  15  ...
NoWriterDateCnt.TitleFile(s)
5094하주형11/20/20181742안녕하세요 C# using 예약어관련 질문드립니다. [1]
5093Mediaelement11/19/20183127안녕하세요. wpf Mediaelement 질문 있습니다. [3]
5092하주형11/17/20181625안녕하세요 c# 7.1책 스택관련 질문드립니다. [2]
5091아짱11/15/20181906UWP 개발중 질문이 있습니다. [3]
5090황윤하11/15/20183766c# Socket Server에 접근할 수 있는 client 개수 제한 [5]
5089문성운11/14/20182385uwp에서 TcpListener를 사용할 수 없나요? [5]
5088안중언11/10/20181737TCP 소켓 [1]파일 다운로드1
5084김광흠11/9/20181869사운드 파일 "filename.wav" 와 같은 특정 파일이 실행되는것을 감시하고 싶습니다. [3]
5083거북이11/4/20182016타입의 범위를 넘어서는 연산의 개념을 모르겠습니다. [4]
5082꾸엉11/1/20181517BCL 타입을 모아둔 곳이 있나요? [2]
5081꾸엉10/31/20181717C# 7.1 235p 질문입니다. [3]
5080WPF초보10/30/20182061[WPF] IsManipulationEnabled속성 설정시 Click이벤트 문의 [1]
5079jhp10/30/20182268이 소스에 API후킹 소스를 추가하고 싶은데 어떻게 해야될지 모르겠어요. [4]
5078꾸엉10/29/20181670C# 7.1 185~187p 질문입니다. [2]
5077윤현수10/29/20183706setup파일 설치 이후 실행이 안되는 현상 [11]
5074진우10/28/20181759C# 생성과 동시에 초기화 하는 코드 문의 [2]
5073돌고래10/27/20181899c# 공부 방향 질문 드립니다. [3]
5072엔벌잉10/24/20182320C# textbox, button질문입니다! [4]파일 다운로드1
5071엔벌잉10/23/20182277C#윈도우폼 질문입니다!! [2]
5070진우10/17/20181774Visual Studio 서비스팩과 업데이트 차이 문의 [2]
5069감자10/12/20182109빌드 구성을 재설정하는 방법이 있을까요? [1]파일 다운로드1
5068누오10/10/20181767ASP Core 2.0 에서 dll안에 있는 뷰 읽어들이는 방법? [1]
5067김정민10/5/20181785다른 윈도우가 깨지는 현상을 막을 수 있을까요 [3]
5066로니브10/4/20182119ASP.NET MVC에서 View 파일 숨기는법? 보안처리 하는법? 관련 질문.. [1]
5065키모10/1/20181742문자 질문입니다. [3]
5064로니브10/1/20182201클래스 라이브러리에서 .cshtml파일을 추가하는 방법은 없나요? [3]
1  2  3  4  5  6  7  8  9  10  11  [12]  13  14  15  ...