비동기 쓰레드를 반복 생성하여 각각을 관리해야할때 사용한 방법
//class 생성
public class EachTask
{
public CancellationTokenSource cancellationTokenSource = new CancellationTokenSource(); // 해당 Task를 취소할 때 사용
public int id;
public Task task;
//적당히 바인딩할 변수들을 선언하여 ListView에서 사용 했었음
}
public List<EachTask> TaskList = new List<EachTask>();
public void AddTask()
{
EachTask eachTask = new EachTask();
eachTask.task = SomethingTask(eachTask);
TaskList.Add(eachTask);
}
private async Task SomethingTask(EachTask eachTask)
{
Action action = () =>
{
while(true)
{
eachTask.cancellationTokenSource.Token.ThrowIfCancellationRequested();
await Task.Delay(100);
}
};
await Task.Run(action, eachTask.cancellationTokenSource.Token);
}