【发布时间】:2013-04-10 10:06:00
【问题描述】:
我读过的每篇博文都告诉您如何在 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 的使用,是写异步方法的最佳方式,还是我应该用另一种方式来写?
【问题讨论】:
-
我在问一个关于如何构建方法的一般问题。我只想知道从哪里开始将我已经同步的方法变成异步方法。
-
好的,那么典型的同步方法做了什么,为什么要让它异步?
-
假设我必须批量处理一堆文件并返回一个结果对象。
-
好的,所以:(1)什么是高延迟操作:获取文件——因为网络可能很慢,或者其他——或者进行处理——因为它是 CPU 密集型的, 说。并且(2)你还没有说为什么你希望它首先是异步的。是否有您不想阻止的 UI 线程,还是什么?
-
@EricLippert op给出的例子很基础,其实没必要那么复杂。
标签: c# async-await c#-5.0