본문 바로가기
C#

[C#] CancellationToken 사용법

by Minius 2024. 7. 11.
반응형

시작

CancellationToken이라는 것을 알고 있었지만, 어떻게 작동하는지는 모르고 있었다.

왜냐하면 회사의 코드에는 CancellationToken만 적혀있었기 때문에 무슨 의도인지는 알았지만 도대체 어떻게 동작하는지,

감이 오지 않았다.

 

이런 코드로 있었기 때문,

CancellationToken cancellationToken = new CancellationToken();

var response = await ExecuteAsync(async token => await httpClient.PostAsync(url, content, token), cancellationToken);

 

이러면 프로그램이 어떻게 알고 취소를 하는거지? 싶었다.

 

그리고 알아본 바,

 

공식 문서

https://learn.microsoft.com/ko-kr/dotnet/api/system.threading.cancellationtoken?view=net-7.0

 

CancellationToken Struct (System.Threading)

Propagates notification that operations should be canceled.

learn.microsoft.com

 

바뀐 코드

// CancellationTokenSource로 시작
var cts = new CancellationTokenSource();

// 이렇게 토큰을 받아오고,
CancellationToken cancellationToken = cts.Token;

// 사용시
var response = await ExecuteAsync(async token => await httpClient.PostAsync(url, content, token), cancellationToken);

// 취소시
if (필요할 경우)
{
	cts.Cancel();
}

 

이렇게 cts.Cancel() 메소드를 사용해서 내가 원할 때, 혹은 timeout이 너무 길 때 사용하는 것이었다.

댓글