【发布时间】:2014-08-13 17:06:40
【问题描述】:
假设我有以下代码:
static void Main(string[] args)
{
println("begin s");
Task<int> s = CaculateSometingAsync();
println("begin s1");
Task<int> s1 = CaculateSometingAsync1();
println(s.Result.ToString());
println(s1.Result.ToString());
}
static async Task<int> CaculateSometingAsync()
{
return await Task.Factory.StartNew<int>(() =>
{
Thread.Sleep(1000);
return 100;
});
}
static Task<int> CaculateSometingAsync1()
{
return Task.Factory.StartNew<int>(() =>
{
Thread.Sleep(1000);
return 200;
});
}
结果如下:
16:55:38 begin s
16:55:38 begin s1
16:55:39 100
16:55:39 200
我对这两个函数的了解是它们具有相同的行为。 他们都创建了一个线程池线程来运行任务。
两者
Task<int> s = CaculateSometingAsync();
和
Task<int> s1 = CaculateSometingAsync1();
不要阻塞主线程。
那么这两个函数有什么区别吗?
【问题讨论】:
标签: c# multithreading asynchronous parallel-processing