请看以下两种方法。第一个函数GetQuoteImageContent调用GetFileHeadersByDirectory来返回FileVM对象的列表。但是,如果我返回第一个函数时:
return await fileTasks.GetFileHeadersByDirectory(imageLibraryDirectory, false,
"/quotecontents/").ConfigureAwait(false);然后它运行良好,但是由于我需要对返回的值进行一些处理,所以当我试图将它赋值给一个变量时:
IEnumerable<FileVM> images = await fileTasks.GetFileHeadersByDirectory(
imageLibraryDirectory, false,
"/quotecontents/").ConfigureAwait(false);它在没有返回任何东西的情况下就脱离了这个功能。有人能指出我呼叫机制的错误吗?最后,我想获得集合IEnumerable< FileVM >,以便对其进行一些处理。在这方面的任何帮助都是非常感谢的。
public async Task<IEnumerable<FileVM>> GetQuoteImageContent(string quoteId)
{
IFileTasks fileTasks = new FileTasks();
string imageLibraryDirectory = string.Format("quotecontents/{0}", quoteId.Split('/')[1]);
IEnumerable<FileVM> images = await fileTasks.GetFileHeadersByDirectory(imageLibraryDirectory, false, "/quotecontents/").ConfigureAwait(false);
return images;
}
// This is 2nd async method which queries database to return list of files
public async Task<IEnumerable<FileVM>> GetFileHeadersByDirectory(string directory, bool recursive, string rootDirectory = "")
{
using (var fileSession = TasksManager.CreateTemporaryFSSession())
{
var fileQuery = fileSession.Query().OnDirectory(directory, recursive);
var fileHeaders = await fileQuery.ToListAsync().ConfigureAwait(false);
var fileVMs = ConvertToFileVM(fileHeaders, rootDirectory);
return fileVMs;
}
}发布于 2015-02-23 15:31:08
从评论中,我了解到您没有在GetQuoteImageContent上等待,这就是为什么您似乎认为您的方法没有返回图像。
如果您想在获取之后立即迭代图像,那么您也必须对此进行await处理:
IEnumerable<FileVM> images = await GetQuoteImageContent(quoteId).ConfigureAwait(false);
foreach (var image in images)
{
// Do something
}如果不使用await,编译器会对您大喊大叫,因为它试图迭代不可迭代的东西(因为Task没有实现IEnumerable)。
https://stackoverflow.com/questions/28676271
复制相似问题