我正在尝试异步执行多个(n)任务,这些任务合计为单个求和结果。目前,我有以下内容:
public class Foo
{
public async void DoWork()
{
var stopwatch = Stopwatch.StartNew();
List<Task> tasks = new List<Task>();
var bar = new Bar();
for (int i = 0; i < 20; i++)
{
var task = Task.Run(() =>
{
Thread.Sleep(500);
bar.Count1++;
bar.Count2++;
});
tasks.Add(task);
}
await Task.WhenAll(tasks.ToArray());
Console.WriteLine("All done, Bar Count1: " + bar.Count1 + ", Count2: " + bar.Count2);
stopwatch.Stop();
Console.WriteLine("Time taken " + stopwatch.ElapsedMilliseconds + " ms");
}
}
public class Bar
{
public int Count1 { get; set; }
public int Count2 { get; set; }
}
我希望bar.Count1
和bar.Count2
在执行结束这里有20个值,但是,我每次运行程序时,我得到不同的值,为他们每个人(这是大部分时间<20)。我如何解决这个问题?
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句