获取线程ID并终止线程

时间:2016-01-14 10:12:21

标签: c# multithreading win-universal-app uwp

我有一个可以同时运行多次的异步方法。此方法执行对服务器的调用,因此需要一些时间才能完成。我希望每次调用此方法的实例时都停止执行同时运行的同一方法。我正在考虑创建一个线程ID列表,每次调用该方法时,为该方法的旧实例的执行而创建的线程将被终止。

所以我正在寻找的方法是获取运行特定方法的当前线程ID,以及使用其id终止线程的方法。

PS。我已经检查了所有关于查找线程ID等的帖子,但这些都没有在UWP中发挥作用。

1 个答案:

答案 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 一起使用的简单示例,但大多数异步方法都使用这些令牌,甚至可以将它们转换为任务将使用一个。

有关任务取消的更多信息,您会发现CancellationTokenat MSDN等。