使用以下代码片段的简单示例:
using System.Data;
using CustomerNameSpace;
...
...
CDataSet.CustomerDataTable dtCustomer = GetCustomer();
var customersWithName = dtCustomer.AsEnumerable()
.Where(x => x.Name != null)
.CopyToDataTable();
Run Code Online (Sandbox Code Playgroud)
出于某种原因,我的同事CopyToDataTable()在CustomerNameSpace.
本例中的程序同时使用命名空间System.Data和CustomerNameSpace.
现在两者都包含扩展方法CopyToDataTable()。
在下面的示例片段中,有没有办法指定要使用这两个命名空间中的哪些扩展方法?
任何人都可以向我解释这两种异步方法之间的区别吗?
方法A.
public async Task<List<Thumbnail>> GetAllThumbnailsAsync()
{
return await Task.Factory.StartNew(() =>
{
var imageUris = GetAllDirectoriesWithImageAsync(CommandBaseUri).Result;
return imageUris.Select(GetThumbnail).OrderByDescending(t => t.ImageDateTime).ToList();
});
}
Run Code Online (Sandbox Code Playgroud)
方法B.
public async Task<List<Thumbnail>> GetAllThumbnailsAsync()
{
var imageUris = await GetAllDirectoriesWithImageAsync(CommandBaseUri);
return imageUris.Select(GetThumbnail).OrderByDescending(t => t.ImageDateTime).ToList();
}
Run Code Online (Sandbox Code Playgroud)
据我所知,这两个方法都应该返回调用者并且不会阻止UI线程,但在这种情况下,只有方法A按预期工作,而方法B阻止我的UI.
我相信必须有一些基本概念,我可能在使用async/await时误解了.
任何人都可以开导我吗?