小编Iva*_*azz的帖子

有没有办法为不同命名空间中的同名扩展方法指定使用哪个扩展方法?

使用以下代码片段的简单示例:

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.DataCustomerNameSpace.

现在两者都包含扩展方法CopyToDataTable()

在下面的示例片段中,有没有办法指定要使用这两个命名空间中的哪些扩展方法?

c# linq extension-methods

3
推荐指数
1
解决办法
91
查看次数

为什么使用await关键字的异步方法仍然阻塞主线程?

任何人都可以向我解释这两种异步方法之间的区别吗?

方法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时误解了.

任何人都可以开导我吗?

c# task async-await

1
推荐指数
1
解决办法
1220
查看次数

标签 统计

c# ×2

async-await ×1

extension-methods ×1

linq ×1

task ×1