gpt4 book ai didi

c# - .NET 单任务等待的用例

转载 作者:行者123 更新时间:2023-11-30 21:42:36 25 4
gpt4 key购买 nike

我想知道创建“热”任务并通过阻塞线程等待它有什么用。示例:

Task.Run(() => DoWork()).Wait();

因为在任务未完成之前主线程将被阻塞,所以我会在主线程中运行 DoWork() 而不会将其放入新任务中。

我在互联网上的许多地方(也包括 msdn)看到了这个例子,并且在我们公司的项目中发现了这样的代码。只有当我想将取消 token 传递给正在运行的任务时,我才能看到它有用。

最佳答案

假设您有一些由其他人编写的第 3 方 API。让我们考虑以下几点:

  1. 您知道函数有时会挂起的错误。
  2. 您不能选择自己重新编写 API。
  3. 没有足够的时间自己重新编写 API。
  4. API 工作足够好

如果上述任何陈述为真,那么您可能会遇到创建任务并等待其完成的情况。

让我们以第一项为例,其中存在导致 API 函数挂起的错误...如果您启动任务并等待 API 函数完成(如下所示),您就不会冒以下风险挂起基于有问题的 API 的整个程序。

ThirdPartyApi api = new ThirdPartyApi();
Task apiFunctionRunning = null;

// start the API's function running on it's own thread
apiFunctionRunning = Task.Run(() =>
{
api.DoWork();
});

// wait for the API function to complete but also time-out if
// there is some problem where it hangs up (give it maybe 5s)
apiFunctionRunning.Wait(5000);

关于c# - .NET 单任务等待的用例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42433041/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com