小编Ale*_*hke的帖子

Task.WhenAny - 剩余的正在运行的任务会发生什么?

我有以下代码:

List<Task<bool>> tasks = tasksQuery.ToList();
while (tasks.Any())
{
    Task<bool> completedTask = await Task.WhenAny(tasks);
    if (await completedTask)
        return true;

    tasks.Remove(completedTask);
}
Run Code Online (Sandbox Code Playgroud)

它并行启动任务.当第一个完成的任务返回true时,方法返回true.

我的问题是:

所有剩余的任务已经启动并且可能仍然在后台运行会发生什么? 这是执行异步,并行和在第一个条件发生后应该返回的代码的正确方法,还是最好逐个启动它们并等待单独进行?

谢谢

c# task-parallel-library async-await

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

顺序等待VS继续等待

我想知道编写异步代码的最佳/正确方法是什么,该异步代码由两个(或更多)异步和依赖(第一个必须完成执行第二个)操作组成.

使用async/await的示例:

await RunFirstOperationAsync();
await RunSecondOperationAsync();
Run Code Online (Sandbox Code Playgroud)

续例示例:

await RunFirstOperationAsync()
    .ContinueWith(t => RunSecondOperationAsync());
Run Code Online (Sandbox Code Playgroud)

.net c# asp.net async-await

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

.NET CLR性能计数器丢失

在我的x64 Windows 8.1笔记本电脑上,几乎所有的.NET CLR性能计数器都丢失了.

任何想法如何解决这一问题?

.NET计数器缺失

windows clr

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

异步 IStringLocalizer - GetAllStrings

我们有一个IStringLocazlizer的自定义实现,它从我们内部公司 CMS 加载标签,通过 HTTP Rest 接口公开数据。

我们想使用 locazlier 中内置的 NET Core,但我不喜欢GetAllStrings Sync 方法,该方法必须阻止任务才能执行 HTTP 调用。

我们有一个明显的缓存,但我确实认为它看起来不对。

对此有什么想法吗?

例子:

public IEnumerable<LocalizedString> GetAllStrings(bool includeParentCultures)
    {
        Task<CmsLabelsModel> task = pipeline.SendAsync(new GetLabelsModelRequest(ResourceName));

        CmsLabelsModel result = task.GetAwaiter().GetResult(); //Yuk Yuk

        return result.LabelModels.Select(pair => new LocalizedString(pair.Key, pair.Value.Value));
    }
Run Code Online (Sandbox Code Playgroud)

c# asp.net-core

5
推荐指数
0
解决办法
630
查看次数

注入AutoMapper实例

我有一个ASP.NET MVC应用程序,其中所有映射都以这种方式在引导期间注册:

Mapper.CreateMap<AdvicesModel, Advices>();
Run Code Online (Sandbox Code Playgroud)

到目前为止,我们静态地使用了它"旧"的方式:

Mapper.Map<Advice>(adviceDto)
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好.

更新到AutoMapper的第4版后,我发现建议使用它来构建实例.有人能指出我如何正确地指示Castle将AutoMapper的实例注入我的依赖项并且不是静态地使用它.

我想象的是这样的:

var viewModel = mapper.Map<CartViewModel>(cart);
Run Code Online (Sandbox Code Playgroud)

IMapper实例注入.

asp.net-mvc castle-windsor automapper

3
推荐指数
2
解决办法
5351
查看次数