gpt4 book ai didi

c# - 如何在 C# 中创建异步方法?

转载 作者:IT王子 更新时间:2023-10-29 03:30:16 27 4
gpt4 key购买 nike

我读过的每篇博文都会告诉您如何在 C# 中使用异步方法,但出于某些奇怪的原因,从来没有解释过如何构建您自己的异步方法来使用。所以我现在有这段代码使用了我的方法:

private async void button1_Click(object sender, EventArgs e)
{
var now = await CountToAsync(1000);
label1.Text = now.ToString();
}

我写了这个方法CountToAsync:

private Task<DateTime> CountToAsync(int num = 1000)
{
return Task.Factory.StartNew(() =>
{
for (int i = 0; i < num; i++)
{
Console.WriteLine("#{0}", i);
}
}).ContinueWith(x => DateTime.Now);
}

Task.Factory 的使用是编写异步方法的最佳方式,还是我应该用另一种方式编写?

最佳答案

我不推荐 StartNew,除非您需要那种复杂程度。

如果您的异步方法依赖于其他异步方法,最简单的方法是使用 async 关键字:

private static async Task<DateTime> CountToAsync(int num = 10)
{
for (int i = 0; i < num; i++)
{
await Task.Delay(TimeSpan.FromSeconds(1));
}

return DateTime.Now;
}

如果您的异步方法正在执行 CPU 工作,您应该使用 Task.Run:

private static async Task<DateTime> CountToAsync(int num = 10)
{
await Task.Run(() => ...);
return DateTime.Now;
}

你可以找到我的 async/await intro有帮助。

关于c# - 如何在 C# 中创建异步方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16063520/

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