Web*_*Web 5 .net multithreading .net-4.0 c#-4.0
我目前正在尝试使用.net任务来运行一个长方法.我需要能够从任务中返回数据.我想在每次在新任务中运行时多次调用此方法.但是,使用Task.Result属性返回数据会使每个任务等待直到完成.
例如,目前如果做这样的事情:
public void RunTask()
{
var task = Task.Factory.StartNew(() =>
{
return LongMethod()
});
Console.WriteLine(task.Result);
}
Run Code Online (Sandbox Code Playgroud)
并且多次调用它,每次花费不同的时间,在执行下一个任务之前等待每个任务完成.
是否可以多次调用我的RunTask方法,每次返回结果而不必等待每个任务按顺序完成?
是.当你打电话task.Result给a时Task<T>,它会阻塞直到结果发生.
如果你想让它完全异步,你可以改变你的方法Task<T>直接返回,并在调用者的级别"阻止",或者使用延续:
public void RunTask()
{
var task = Task.Factory.StartNew(() =>
{
return LongMethod()
});
// This task will run after the first has completed...
task.ContinueWith( t =>
{
Console.WriteLine(t.Result);
});
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1496 次 |
| 最近记录: |