gpt4 book ai didi

c# - 创建一个类型化的异步任务

转载 作者:太空狗 更新时间:2023-10-30 01:31:29 27 4
gpt4 key购买 nike

我现在想创建一些异步任务而不启动它们。对于未类型化的任务,没有问题:

    private Task CreateTask() {
return new Task(
async () => await DoSomething().ConfigureAwait(false));
}

但是为了处理异常,我向我的函数添加了一个返回值。但是我怎样才能用正确的语法来写它:

    private Task<bool> CreateTask() {
return new Task<bool>(
async () => await DoSomething().ConfigureAwait(false));
}

我收到消息,异步 lambda 表达式无法转换为 func。所以我的问题是:它是如何正确书写的?

最佳答案

I want to create some async Tasks without starting them at the moment.

无论您要解决什么问题,这都是错误的解决方案。如果你想定义你想在未来运行的代码,那么你应该使用委托(delegate):

private Func<Task> CreateTaskFactory()
{
return async () => await DoSomething().ConfigureAwait(false);
}

But to handle Exceptions I added a return value to my function.

同样,这不是最佳解决方案。任务已经可以很好地理解异常,而无需编写任何额外的代码。

如果您确实需要返回一个值(作为数据),那么您可以返回一个创建Task<T> 的委托(delegate)。 :

private Func<Task<int>> CreateTaskFactory()
{
return async () => await DoSomethingReturningInt().ConfigureAwait(false);
}

关于c# - 创建一个类型化的异步任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41057900/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com