c# - 如何在不启动任务的情况下构建任务?

标签 c# task-parallel-library async-await

我想使用 this Task<TResult>构造函数。我似乎无法正确使用语法。有人可以更正我的代码吗?

另外,我认为如果 Task 是对的吗?是这样构造的,还没开始?

我认为我需要的构造函数是:

Task<TResult>(Func<Object, TResult>, Object)

我得到的错误是:

Argument 1: cannot convert from 'method group' to 'System.Func<object,int>'

static void Main(string[] args)
{
    var t = new Task<int>(GetIntAsync, "3"); // error is on this line
    // ...
}

static async Task<int> GetIntAsync(string callerThreadId)
{
    // ...
    return someInt;
}

最佳答案

var t = new Task<int>(() => GetIntAsync("3").Result);

或者

var t = new Task<int>((ob) => GetIntAsync((string) ob).Result, "3");

为避免使用 lambda,您需要编写如下静态方法:

private static int GetInt(object state)
{
   return GetIntAsync(((string) state)).Result;
}

然后:

var t = new Task<int>(GetInt, "3");

关于c# - 如何在不启动任务的情况下构建任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16066349/

相关文章:

random - 并行循环和随机产生奇怪的结果

file-upload - 在小型 azure 实例中使用 Parallel.Foreach

javascript - 为什么 `awaited`函数后面的函数没有被触发

c# - 如何在 asp .net IIS 7 中实现条件 app_offline.htm

c# - 为什么 HTTP 请求永远不会返回异步等待?

c# - 在 Visual Studio 扩展中使用 DTE2 界面接收测试运行开始/完成

c# - 在 C# 中使用变量等待和线程安全

c# - 启动长时间运行的异步方法的 Task.Run 与直接异步调用

c# - 使用 SSL/TLS 时出现 WCF 错误

c# - 序列化包含 StateServer 的 linq2sql 对象的对象