我正在尝试将某种类型的列表转换为另一种类型的列表,并且列表非常大,因此转换I图像对于所有创建的新对象来说都是计算量很大,所以我想解决这个问题。一个任务,所以我可以等待结果。我对C#中的异步代码并不是全新的,但也许这是我第一次遇到需要像以前一样创建异步兼容方法。
下面的代码给了我红色的曲线和错误似乎无论我编写代码的方式。有人可以看看这个,并告诉我我写错了什么部分。
我试图以lambda形式显式声明参数,我尝试创建一个Func<,>但似乎没什么用。
public async Task<ComplexTypeAdapters.GetQuestionsByTestTakenResult> Client4_GetQuestionsByTestTaken( long? testResultId, string cultureTag )
{
var result = await Context.Client4_GetQuestionsByTestTaken(testResultId, cultureTag).ToListAsync();
//var list = new List<ComplexTypeAdapters.GetQuestionsByTestTakenResult>( );
return await Task.Factory.StartNew( () =>
{
var list = new List<ComplexTypeAdapters.GetQuestionsByTestTakenResult>( );
foreach( Client4_GetQuestionsByTestTaken_Result one in result )
{
var res = new ComplexTypeAdapters.GetQuestionsByTestTakenResult
{
Id = one.id, App = one.App, Ver = one.Ver, Name = one.Name, Script = one.Script
};
try
{
res.SampleDocs = XElement.Parse( one.sampleDocs );
} catch( Exception )
{
res.SampleDocs = null;
}
try
{
res.Instructions = XElement.Parse( one.instructions );
} catch( Exception )
{
res.Instructions = null;
}
try
{
res.SampleDocsFolder = XElement.Parse( one.sampleDocsFolder );
} catch( Exception )
{
res.SampleDocsFolder = null;
}
list.Add( res );
}
return list;
} );
return returnList;
}
答案 0 :(得分:1)
我想在任务上解决此问题,以便等待结果
我假设您希望在此处理过程中释放UI线程。
在这种情况下,假设您已经编写为Client4_GetQuestionsByTestTaken
的同步代码,那么您可以这样做:
await Task.Run(() => Client4_GetQuestionsByTestTaken(testResultId, cultureTag));