0

假设有多种方法可以执行某项操作,并且每种方法的效率都更高。我想产生多个线程来完成一个动作,看看哪个先完成。我该怎么做?我知道我会产生多个线程,但首先完成的线程必须向主线程返回一个值,这将不得不中止所有正在运行的线程。这是为了学习,所以我想了解如何使用线程和任务库来做到这一点。

4

1 回答 1

3
  1. 让你所有的替代方式都接受一个CancellationToken.
  2. 创建 aCancellationTokenSource并将所有替代方法作为单独Task的 s 调用,同时将 s 传递TokenTasks 和执行的方法。
  3. 使用Task.WaitAny(tasks)await Task.WhenAny(tasks)等待最快Task完成。从那个调用的结果,你可以得到最快的结果Task
  4. Cancel()取消令牌以通知剩余Task的 s 在方便时立即停止。
于 2013-06-26T18:32:29.020 回答