小编usr*_*usr的帖子

我想等待抛出AggregateException,而不仅仅是第一个Exception

等待故障任务(具有异常集的任务)时,await将重新抛出存储的异常.如果存储的异常是a AggregateException,它将重新抛出第一个并丢弃其余的异常.

我们如何使用await并同时抛出原件AggregateException以便我们不会意外丢失错误信息?

注意,当然可以考虑使用hacky解决方案(例如,试一试await,然后调用Task.Wait).我真的希望找到一个干净的解决方案.这里最好的做法是什么?

我想过使用自定义awaiter,但内置TaskAwaiter包含很多魔法,我不知道如何完全重现.它调用TPL类型的内部API.我也不想重现所有这些.

如果你想玩它,这是一个简短的repro:

static void Main()
{
    Run().Wait();
}

static async Task Run()
{
    Task[] tasks = new[] { CreateTask("ex1"), CreateTask("ex2") };
    await Task.WhenAll(tasks);
}

static Task CreateTask(string message)
{
    return Task.Factory.StartNew(() => { throw new Exception(message); });
}
Run Code Online (Sandbox Code Playgroud)

只抛出两个例外中的一个Run.

请注意,Stack Overflow上的其他问题无法解决此特定问题.建议重复时请小心.

c# task-parallel-library async-await c#-5.0

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

使用SignalR在ASP.NET中等待可用套接字

我正在使用SignalR在asp.net中实现聊天,但是当我打开我的Web应用程序的多个选项卡时,我正在 "等待可用的套接字......".

我已经实现了Performance Tuning SignalR上指定的所有设置,但我的问题没有得到解决.

我该如何解决这个问题?

c# asp.net signalr

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

如何输入演员表

C#:

static int F(object x)
{
 return x is string ? 1 : 2;
}
Run Code Online (Sandbox Code Playgroud)

哈斯克尔? 在我看来,棘手的一点是Haskell没有根类型对象.

编辑:我不关心转换为字符串.我想知道如何进行类型转换(例如,查看对象客户还是订单.

haskell casting

14
推荐指数
3
解决办法
3万
查看次数

什么是比较和交换有益?

我最近在阅读有关Compare和Swap原子动作(CMPXCHG,.NET的Interlocked.CompareExchange,无论如何).

我理解它是如何在内部工作的,以及如何从客户端使用它.

我无法弄清楚的是,何时会有人使用CAS?

维基百科说:

CAS用于实现信号量和互斥量等同步原语,同样是更复杂的无锁和无等待算法.

那么,任何人都可以给我一个更通用的真实世界用例,其中包含CAS使用的代码和描述吗?

这个问题与语言无关,因此任何语言都可以(基于C语言或x86程序集首选).

谢谢!

c c# assembly thread-safety compare-and-swap

14
推荐指数
2
解决办法
3274
查看次数

是否有PLINQ的异步版本?

我想在一定程度的并行处理并行处理项目的同时对数据流执行查询.通常情况下,我会使用PLINQ,但我的工作项不是CPU绑定的,而是IO绑定的.我想使用异步IO.PLINQ不支持异步工作.

运行PLINQ样式查询的最聪明方法是什么,但使用异步工作项?


以下是该问题的更详细说明:

我的目标是以下面的查询逻辑描述的方式处理可能无限的"项目"流:

var items = new int[10]; //simulate data

var results =
 from x in items.AsParallel().WithDegreeOfParallelism(100)
 where Predicate(x)
 select ComputeSomeValue(x);

foreach (var result in results)
 PerformSomeAction(result);
Run Code Online (Sandbox Code Playgroud)

此查询只是真实查询的草图.现在我希望每个占位符函数都是异步的(返回a Task和内部基于异步IO).

请注意,可能存在的内容远远多于可以存储在内存中的项目.我还必须控制并行度以最大化底层网络和磁盘硬件.

这个问题不是关于多核的.它完全适用于只有一个CPU内核的机器,因为IO仍然可以从并行性中受益.想想慢速的Web服务调用等.

.net asynchronous plinq task-parallel-library

14
推荐指数
2
解决办法
1027
查看次数

Object.observe()如何影响性能?

所述Object.observe()的JavaScript API允许任何一段代码以接收改变通知任何JavaScript对象的所有属性的变化.

这是否会严重影响JavaScript引擎(即V8)可以执行的代码生成和性能优化?如果必须生成更改通知,现在生成的本机代码似乎必须检查对象的每次写入.无法静态确定给定对象是否设置了通知.因此检查无法优化.

似乎任何符合要求的JavaScript引擎现在都因此API而导致性能永久严重损失.

javascript performance javascript-engine object.observe

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

SQL Server:1 ++ 2是什么意思?

SQL Server的T-SQL语法似乎允许连续多个加号:

SELECT 1 + 2 --3
SELECT 1 ++ 2 --3
SELECT 1 ++++++ 2 --3
SELECT 1 + '2' --3
SELECT 1 ++ '2' --3
SELECT '1' + '2' --'12'
SELECT '1' ++ '2' --'12'
Run Code Online (Sandbox Code Playgroud)

多个加号似乎表现得像一个加号.为什么存在"多重运算符" ++?它有什么作用?

t-sql sql-server syntax

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

如何让WMD-Editor将Markdown发布到服务器而不是HTML?

似乎WMD-Editor正在将HTML发布到服务器而不是降价.我怎么能让它发送Markdown?

javascript markdown wmd

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

如何在SQL Server中选择聚簇索引?

通常,通过设置主键在SQL Server Management Studio中创建聚簇索引,但是我最近关于PK < - >聚簇索引(Microsoft SQL Server 2008主键的含义)的问题表明没有必要设置PK和聚集索引是相等的.

那么我们应该如何选择聚簇索引呢?我们有以下示例:

create table Customers(ID int,...)create table Orders(ID int,CustomerID int)

我们通常会在两个ID列上创建PK/CI,但我想为CustomerID中的Orders创建它.那是最好的选择吗?

sql-server database-design primary-key clustered-index sql-server-2008

11
推荐指数
2
解决办法
8171
查看次数

为什么所有ASP.NET MVC网站都允许并忽略任何URL前面的字符串"/(F())/"?

我注意到,即使我的URL前缀/(F())/是废话,我的ASP.NET Web应用程序的请求也会成功.通常的行动方法很受欢迎.Request.Url没有显示URL前缀.所以,如果我要求/(F())/x行动看到Request.Url == "/x"

然后我尝试了其他ASP.NET MVC站点,例如Stack Overflow:

https://stackoverflow.com/(F())/questions/43593952/why-do-all-asp-net-mvc-websites-allow-and-ignore-the-string-f-in-front-o

根据Fiddler的说法,正在按照预期提出要求:

在此输入图像描述

正如您所看到的,请求URL是正确的,服务器在没有重定向的情况下回复完整内容.浏览器窗口也显示该URL.

此URL 确实有效.因此,我得出结论,框架中的某些内容会导致重写此请求并删除前缀.看起来Stack Overflow应用程序不知道前缀.

在Windows 7上的.NET 4.6.2上的Visual Studio 2017中创建的新MVC应用程序中也会出现相同的结果.

另一个有趣的受害者:https://www.microsoft.com/(F(blah))/ en-us/default.aspx(微软主页).

字符串(F())并不特别.查看其他有用的字符串的注释,例如/(F(pV0)).

由于我的ASP.NET代码对原始URL(Request.Url不包含前缀)视而不见,我似乎甚至无法检测到这种情况并使请求失败.

我还没有确认这是一个MVC问题.似乎很难找到ASP.NET + IIS附带的巨大功能海洋中的罪魁祸首.谁知道默认打开哪些功能?!我认为没有人真的知道:)

至少这是一个搜索引擎优化问题,但我发现它也令人不安,不知道发生了什么.这就是我正在调查的原因.这是什么行为以及如何摆脱它?

asp.net iis asp.net-mvc

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