我一直在试图弄清楚如何返回类型为Task的数据而不是像这样的int,例如,Task<Dictionary<string, string>>.
我似乎发现的所有示例都显示返回Task<int>.通过说,这很容易做到return 42;.
我一直在尝试写的函数是这样的:
Task<Dictionary<string, string>> getDamaged()
{
Task<Dictionary<string, string>> d = new Task<Dictionary<string, string>>();
Dictionary<string, string> e = new Dictionary<string, string>();
foreach (Building i in buildingArray)
{
if (Convert.ToInt32(i.efficiency) < 100)
{
e.Add(i.buildingID, i.buildingName);
//d.Add(i.buildingID, i.buildingName); // this does not work, either
}
}
Run Code Online (Sandbox Code Playgroud)
我发现Task.FromResult方法看起来有点前途,但进一步调查似乎表明,TResult作为一个完成的任务对我来说听起来不一定像你可以await.
有关如何使其正常工作的任何想法?
更新
这个方法的重点是我试图从我的UI线程中卸载工作以保持我的UI响应.这是我第一次尝试使用带有.net4.5的visual studio 2012来尝试这样做.上面的代码我是从内存中写的.我将发布我一直尝试的实际代码以及注释失败的尝试.
真正让我感到困惑的一个部分是,如果我返回一个int,如果我的返回类型是任务,但如果我尝试使用字典我得到一个错误关于不能隐式地将字典转换为任务
private Task<Dictionary<string, string>> GetDamagedBuildings()
{
//Task<Dictionary<string, string>> damagedBuildings = new Task<Dictionary<string,string>>();
Dictionary<string, string> d = …Run Code Online (Sandbox Code Playgroud)