我有一个可以同时运行多次的异步方法。此方法执行对服务器的调用,因此需要一些时间才能完成。我希望每次调用此方法的实例时都停止执行同时运行的同一方法。我正在考虑创建一个线程ID列表,每次调用该方法时,为该方法的旧实例的执行而创建的线程将被终止。
所以我正在寻找的方法是获取运行特定方法的当前线程ID,以及使用其id终止线程的方法。
PS。我已经检查了所有关于查找线程ID等的帖子,但这些都没有在UWP中发挥作用。
答案 0 :(得分:2)
在 UWP 中,您无法控制线程。但是你可以肯定地控制任务,例如,如果需要,可以使用datetime.c
取消它:
CancellationTokenSource tokenSource = new CancellationTokenSource();
await Task.Run(() =>
{
// your job here
}, tokenSource.Token);
// then if you want to cancel the job use tokenSource:
tokenSource.Cancel();
请注意,这只是将 CancellationToken 与 Task.Run 一起使用的简单示例,但大多数异步方法都使用这些令牌,甚至可以将它们转换为任务将使用一个。
有关任务取消的更多信息,您会发现CancellationToken,at MSDN等。