[英]Running multiple C# Task Async
嗨,通常我会用背景工作者这样做,但我想用C#Task来做,只是为了更好地理解Task。
问题是我有一个具有以下属性的类
private int _number1;
public int Number1
{
get { return _number1; }
set { _number1 = value; OnPropertyChanged("Number1");}
}
private int _number2;
public int Number2
{
get { return _number2; }
set { _number2 = value; OnPropertyChanged("Number2");}
}
请注意我使用INotifyPropertyChanged。
Number1 = Task<int>.Factory.StartNew(() => GenerateResult()).Result;
Number2 = Task<int>.Factory.StartNew(() => GenerateResult2()).Result;
GenerateResult和GenerateResult2只是dumme方法,他们睡觉然后返回一个数字。
我如何使这项工作异步? 从现在开始,GenerateResult2()首先在GenerateResult()完成时调用。
我需要它能够工作异步,因为我不知道每个任务何时完成,或者即使它将完成。
我检查了这个: 任务并行(任务并行库)并且它指出当使用System.Threading.Tasks.Task<TResult>
,任务以异步方式运行并且可以以任何顺序完成。 如果在计算完成之前访问Result,则该属性将阻塞该线程,直到该值可用。
我认为这意味着如果您在访问.Result
之前有一个值,就像您在示例代码中所做的那样,您将不得不等待它先完成。
它确实有意义,因为在完成任务之前不会填充Result
属性。
Task<int>.Factory.StartNew(() => GenerateResult2()).ContinueWith(() => GenerateResult());
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.