반응형
시작
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
바뀐 코드
// 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이 너무 길 때 사용하는 것이었다.
'C#' 카테고리의 다른 글
[C#, Dart] Dart와 C#에서의 변경 불가능한 변수: `final`과 `readonly` 비교 (0) | 2024.07.01 |
---|---|
[C#] 형 변환에 대하여 (for string 그리고 메모리 관점) (0) | 2024.04.17 |
[C#] HttpClient, IHttpClientFactory 차이와 올바른 사용법 (0) | 2024.03.25 |
[C#] 명시적 & 묵시적 형변환 (0) | 2023.11.10 |
[C#] JSON 데이터를 beautify(예쁘게 정렬하여 가독성을 높이는 것)하고 indent(들여쓰기)하는 방법 (0) | 2023.07.28 |
댓글