我想在不启动它们的情况下创建一些异步任务。 使用无类型的任务没有问题:
private Task CreateTask() {
return new Task(
async () => await DoSomething().ConfigureAwait(false));
}
但是为了处理Exceptions,我在函数中添加了一个返回值。但是我怎样才能用正确的语法编写它:
private Task<bool> CreateTask() {
return new Task<bool>(
async () => await DoSomething().ConfigureAwait(false));
}
我收到消息,异步lambda表达式无法转换为func。 所以我的问题是:如何正确编写?
答案 0 :(得分:3)
我想在不启动它们的情况下创建一些异步任务。
对于您要解决的任何问题,这是错误的解决方案。如果要定义要在将来运行的代码,则应使用委托:
private Func<Task> CreateTaskFactory()
{
return async () => await DoSomething().ConfigureAwait(false);
}
但是为了处理Exceptions,我在函数中添加了一个返回值。
同样,这不是最好的解决方案。任务已经理解异常,而无需编写任何其他代码。
如果你做需要返回一个值(作为 data ),那么你可以返回一个创建Task<T>
的代表:
private Func<Task<int>> CreateTaskFactory()
{
return async () => await DoSomethingReturningInt().ConfigureAwait(false);
}