[英]Async Task how to return value back from a method
CancellationTokenSource cancellationTokenSource = new CancellationTokenSource();
Task tasks = PeriodicTaskFactory.Start(() => LongRunningOperation(), intervalInMilliseconds: 1000, synchronous: false, cancelToken: cancellationTokenSource.Token);
int taskId = Task.WaitAny(tasks);
和我的LongRunningOperation
private String LongRunningOperation()
{
...
return proj.Name;
}
但問題是如何從Task
獲取LongRunningOperation
方法的值。 方法tasks.Results
。 tasks.Results
不存在。 我想從每個任務中獲取價值。
我從這里得到PeriodicTaskFactory類
是否有基於任務的System.Threading.Timer替換?
謝謝
Task
沒有返回值; Task<T>
確實如此。
您必須修改PeriodicTaskFactory
代碼以返回Task<T>
,然后創建Task<string>
對象。 該方法還應該接受Func<T>
(沒有參數,返回T)而不是Action
,它沒有返回值。
public static Task<T> Start<T>(Func<T> func,
int intervalInMilliseconds = Timeout.Infinite,
int delayInMilliseconds = 0,
int duration = Timeout.Infinite,
int maxIterations = -1,
bool synchronous = false,
CancellationToken cancelToken = new CancellationToken(),
TaskCreationOptions periodicTaskCreationOptions = TaskCreationOptions.None)
{
Task<string> task = PeriodicTaskFactory.Start(LongRunningOperation, intervalInMilliseconds: 1000, synchronous: false, cancelToken: cancellationTokenSource.Token);
string result = task.Result;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.