gul*_*aek 9 .net c# multithreading c#-4.0
嗨,通常我会用背景工作者这样做,但我想用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");}
}
Run Code Online (Sandbox Code Playgroud)
请注意我使用INotifyPropertyChanged.
Number1 = Task<int>.Factory.StartNew(() => GenerateResult()).Result;
Number2 = Task<int>.Factory.StartNew(() => GenerateResult2()).Result;
Run Code Online (Sandbox Code Playgroud)
GenerateResult和GenerateResult2只是dumme方法,他们睡觉然后返回一个数字.
我如何使这项工作异步?从现在开始,GenerateResult2()首先在GenerateResult()完成时调用.
我需要它能够工作异步,因为我不知道每个任务何时完成,或者即使它将完成.
Isa*_*avo 13
当您获得该Result属性时,您实际上正在等待任务完成.它将在后台线程上执行,但是在启动下一个线程之前,您正在主线程中等待完成.
有关详细信息,请参阅MSDN文档.
您应该能够从后台线程中分配属性:
Task<int>.Factory.StartNew(() => Number1 = GenerateResult());
Run Code Online (Sandbox Code Playgroud)
WPF数据绑定将负责将PropertyChanged事件编组到正确的调度程序线程.
| 归档时间: |
|
| 查看次数: |
31789 次 |
| 最近记录: |