mat*_*lto 3 c# dictionary dynamic
我正在尝试将一个Task存储在字典中以便以后执行,但没有成功:
Dictionary<string, Task<object>> router = new Dictionary<string, Task<object>();
router["xyz"] = functionToLaterExec
async Task<string> functionToLaterExec()
{
return await Task.FromResult("Success!");
}
Run Code Online (Sandbox Code Playgroud)
如果我将该函数声明为
string functionToExec()
Run Code Online (Sandbox Code Playgroud)
然后我可以这样做:
router["xyz"] = new Task<string>(functionToExec);
Run Code Online (Sandbox Code Playgroud)
但我需要该函数是异步的.并且不知道如何调用它.我试过了:
var t = router["xyz"];
var data = Encoding.UTF8.GetBytes(await t);
Run Code Online (Sandbox Code Playgroud)
没有成功.
谢谢.
如果您希望以后能够启动异步操作,那么您不想存储a Task,您将要存储Func<Task>(或者,在您的情况下,a Func<Task<string>>,因此,当您想要开始操作时,可以调用该函数,生成Task表示其完成的函数.