c# - 为什么要在任务中使用多个重复的方法实现?

标签 c# .net multithreading task-parallel-library

在线 MSDN 文章中 "How to: Wait on One or More Tasks to Complete" ,有一段代码:

// Try three different approaches to the problem. Take the first one
tasks2[0] = Task<double>.Factory.StartNew(() => TrySolution1());
tasks2[1] = Task<double>.Factory.StartNew(() => TrySolution2());
tasks2[2] = Task<double>.Factory.StartNew(() => TrySolution3());

调用 3 种不同的方法,所有方法都具有完全相同的主体:

static double TrySolution1()
//static double TrySolution2()
//static double TrySolution3() 
{
   int i = rand.Next(1000000);
   // Simulate work by spinning
   Thread.SpinWait(i); 
   return DateTime.Now.Millisecond;
}   

我无法理解这些重复的实现说明了什么?

使用一种方法有什么区别

tasks2[0] = Task<double>.Factory.StartNew(() => TrySolution1());
tasks2[1] = Task<double>.Factory.StartNew(() => TrySolution1());
tasks2[2] = Task<double>.Factory.StartNew(() => TrySolution1());

?

最佳答案

这真的会用一种方法给你同样的答案。在这方面,这个例子是一个“糟糕的例子”。话虽这么说,这只是一个如何解决问题的示例,而不是您将使用的“真实代码”。

我怀疑它背后的想法是向您展示如何使用多个单独的方法(当然,通常会以不同的方式实现)并确定哪个先完成。我确实相信,如果对每种方法使用不同的实现,该示例会更加清晰,但所演示的概念将是相同的。

关于c# - 为什么要在任务中使用多个重复的方法实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15713838/

相关文章:

c# - 配置连接、命令、适配器

python - django 如何在 view.py 中使用多线程?

c - 服务器不读取来自客户端的消息

c# - 带有图标的 Xamarin.Forms 列表应用程序(仅限 Android)

c# - DataContract 继承自非 DataContract 基类

c# - 使用旧解决方案将 nuget 包添加到 .net 核心项目时如何修复 $(NETStandardImplicitPackageVersion) 错误?

c# - 仅获取日期时间的小时/分钟

.net - 在AppDomain中终止任何托管线程时,可以调用任意代码吗?

c# - 存储大前缀树的最佳方式

mysql - MMORPG 中的数据库事务是如何发生的?