使用Task返回数据

时间:2017-02-14 07:58:38

标签: c# .net multithreading task

我希望此函数返回结果:

public Task<Item_DataColl> invoke_command_READ(string UCPTName)
{
    Item_DataColl res =  await Task.FromResult(thread_command_READ_result(UCPTName));
    return res;
}

我不明白Task如何工作以及如何使用它来制作带有结果的线程。你能解释一下吗?

1 个答案:

答案 0 :(得分:1)

在您的特定情况下,最好制作方法async,如下所示:

public async Task<Item_DataColl> invoke_command_READ(string UCPTName)
{
   return await thread_command_READ_result(UCPTName);
}

但是,如果你想要返回任务,但不是异步(为什么??),你可以这样做:

public Task<Item_DataColl> invoke_command_READ(string UCPTName)
{
    Item_DataColl res =  await Task.FromResult(thread_command_READ_result(UCPTName));
    return Task.FromResult(res);
}

您可以将Task<T>视为Thread的包装,它将在传递给任务的Func返回结果之前运行(或者,如果Task,则返回控制)。