gpt4 book ai didi

c# - 了解 System.Threading.Tasks 行为

转载 作者:太空宇宙 更新时间:2023-11-03 20:16:26 25 4
gpt4 key购买 nike

我目前正在尝试通过使用 Tasks 来利用 .Net 4.0 中的并行线程来进行一些性能优化。

我已经创建了三个方法来返回某些对象的集合或仅返回一个对象。我们称它们为 MethodA、MethodB 和 MethodC。

在 MethodB 内部,我有一个长时间运行的延迟 - 大约 5-7 秒。

var person = new Person();

person.A = Task.Factory.StartNew(() => Mystatic.MethodA()).Result;
person.B = Task.Factory.StartNew(() => Mystatic.MethodB()).Result;
person.C = Task.Factory.StartNew(() => Mystatic.MethodC()).Result;

现在我期望在 person.B 之前设置/填充 person.A 和 person.C 属性,但是我很难测试/调试它来验证我的假设。

我已经在所有三个属性上添加了一个并行监视,但调试并没有为我澄清事情。

另外,如果我正在填充一个主对象,这是否是我优化对方法的多次调用的正确方法?

在我的例子中,我有 5-7 种不同的方法来收集数据,我想让它们并行,因为其中一些相对耗时。

最佳答案

从原则上讲,依赖时间是有问题的,因为时间永远无法保证,尤其是在真实条件下。如果您需要确保任务已完成,您应该对任务应用适当的等待。或者使用 C# 5.0 async-await 或延续。

简而言之,不要凭巧合编程。通过构造使您的程序正确。

关于c# - 了解 System.Threading.Tasks 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16378139/

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