首页 > 后端开发 > C++ > 如何在 C# 的 Main 方法中正确调用异步方法?

如何在 C# 的 Main 方法中正确调用异步方法?

DDD
发布: 2024-12-29 15:41:13
原创
306 人浏览过

How Do I Properly Invoke Async Methods from the Main Method in C#?

在 Main 中调用异步方法:综合指南

在异步编程领域,遇到需要调用异步方法的情况并不少见直接从 Main 方法调用异步方法。了解如何实现这一点对于利用异步编程的优势至关重要。

Main 中的异步方法调用

考虑以下代码片段:

<br>公开课test<br>{</p>
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">public async Task Go()
{
    await PrintAnswerToLife();
    Console.WriteLine("done");
}

public async Task PrintAnswerToLife()
{
    int answer = await GetAnswerToLife();
    Console.WriteLine(answer);
}

public async Task<int> GetAnswerToLife()
{
    await Task.Delay(5000);
    int answer = 21 * 2;
    return answer;
}
登录后复制

}

多种方法

调用异步有多种方法Main 方法中的方法:

1.异步 Main 方法(C# 7.1 及更高版本)

对于 C# 7.1 及更高版本,Main 方法可以标记为异步。这使得可以在 Main 方法中直接使用异步方法,如以下示例所示:

<br>static async Task Main(string[] args)<br>{<pre class="brush:php;toolbar:false">test t = new test();
await t.Go();
Console.WriteLine("finished");
Console.ReadKey();
登录后复制

}

2.调用“Wait”方法

对于早期版本的 C#,Wait 方法可用于阻塞线程,直到异步方法完成。这种方法如下所示:

<br>static void Main(string[] args)<br>{<pre class="brush:php;toolbar:false">test t = new test();
t.Go().Wait();
Console.WriteLine("finished");
Console.ReadKey();
登录后复制

}

3。 OnCompleted 回调(传统方法)

在某些情况下,您可能需要使用 OnCompleted 回调,如初始代码片段中所示。但是,这种方法可能会导致死锁,应尽可能避免。

最佳方法

对于 C# 7.1 及更高版本,首选使用异步 Main 方法方法,因为它简化了代码并消除了基于回调的调用的需要。对于早期版本的 C#,可以使用 Wait 方法,但请务必注意与阻塞线程相关的潜在性能影响。

结论

调用异步方法从Main方法中可以通过各种技术来实现。通过了解不同的方法及其含义,您可以根据您的特定需求和您使用的 C# 版本选择最佳解决方案。

以上是如何在 C# 的 Main 方法中正确调用异步方法?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门推荐
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板