如何将任务存储在字典中以供以后在c#中执行

本文关键字:执行 字典 任务 存储 | 更新日期: 2023-09-27 18:16:45

我正在尝试将任务存储在字典中以供稍后执行,但没有成功:

Dictionary<string, Task<object>> router = new Dictionary<string, Task<object>();
router["xyz"] = functionToLaterExec
async Task<string> functionToLaterExec()
{
    return await Task.FromResult("Success!");
} 

如果我将函数声明为

string functionToExec()

然后我可以做:

router["xyz"] = new Task<string>(functionToExec);

但是我需要函数是异步的。而且不知道如何调用它。我如何提问:

var t = router["xyz"];
var data = Encoding.UTF8.GetBytes(await t);

没有成功。

谢谢。

如何将任务存储在字典中以供以后在c#中执行

如果您希望稍后能够启动异步操作,那么您不想存储Task,您将希望存储Func<Task>(或者,在您的情况下,Func<Task<string>>),以便当您想要启动操作时,您可以调用该函数,生成代表其完成的Task