草庐IT

Asynchronous

全部标签

c# - 异步方法中的 ref 和 out 参数

有谁知道为什么async方法不允许有ref和out参数?我对此做了一些研究,但我唯一能找到的是它与堆栈展开有关。 最佳答案 Doesanyoneknowwhyasyncmethodsarenotallowedtohaverefandoutarguments?当然。想一想-异步方法通常几乎立即返回,远在大多数实际逻辑执行之前......这是异步完成的。所以任何out必须在第一个await之前分配参数表达式,并且很可能必须对ref进行一些限制参数以阻止它们在第一个await之后被使用无论如何表达,因为在那之后它们甚至可能无效。考虑使用o

c# - 异步方法中的 ref 和 out 参数

有谁知道为什么async方法不允许有ref和out参数?我对此做了一些研究,但我唯一能找到的是它与堆栈展开有关。 最佳答案 Doesanyoneknowwhyasyncmethodsarenotallowedtohaverefandoutarguments?当然。想一想-异步方法通常几乎立即返回,远在大多数实际逻辑执行之前......这是异步完成的。所以任何out必须在第一个await之前分配参数表达式,并且很可能必须对ref进行一些限制参数以阻止它们在第一个await之后被使用无论如何表达,因为在那之后它们甚至可能无效。考虑使用o

c# - 关于线程的混淆以及异步方法在 C# 中是否真正异步

我正在阅读有关async/await的内容以及何时Task.Yield可能有用并遇到thispost.我对该帖子的以下内容有疑问:Whenyouuseasync/await,thereisnoguaranteethatthemethodyoucallwhenyoudoawaitFooAsync()willactuallyrunasynchronously.Theinternalimplementationisfreetoreturnusingacompletelysynchronouspath.这对我来说有点不清楚,可能是因为我脑海中的异步定义不一致。在我看来,由于我主要从事UI开发,

c# - 关于线程的混淆以及异步方法在 C# 中是否真正异步

我正在阅读有关async/await的内容以及何时Task.Yield可能有用并遇到thispost.我对该帖子的以下内容有疑问:Whenyouuseasync/await,thereisnoguaranteethatthemethodyoucallwhenyoudoawaitFooAsync()willactuallyrunasynchronously.Theinternalimplementationisfreetoreturnusingacompletelysynchronouspath.这对我来说有点不清楚,可能是因为我脑海中的异步定义不一致。在我看来,由于我主要从事UI开发,

c# - Web API + HttpClient : An asynchronous module or handler completed while an asynchronous operation was still pending

我正在编写一个使用ASP.NETWebAPI代理一些HTTP请求的应用程序,我正在努力识别间歇性错误的来源。这似乎是一个竞争条件...但我不完全确定。在详细介绍之前,先介绍应用程序的一般通信流程:Client向Proxy1发出HTTP请求。代理1将HTTP请求的内容转发给代理2代理2将HTTP请求的内容中继到目标Web应用程序目标Web应用响应HTTP请求并将响应流式传输(分block传输)到代理2Proxy2将响应返回给Proxy1,后者又响应原始调用Client。代理应用程序是使用.NET4.5在ASP.NETWebAPIRTM中编写的。执行中继的代码如下所示://Controll

c# - Web API + HttpClient : An asynchronous module or handler completed while an asynchronous operation was still pending

我正在编写一个使用ASP.NETWebAPI代理一些HTTP请求的应用程序,我正在努力识别间歇性错误的来源。这似乎是一个竞争条件...但我不完全确定。在详细介绍之前,先介绍应用程序的一般通信流程:Client向Proxy1发出HTTP请求。代理1将HTTP请求的内容转发给代理2代理2将HTTP请求的内容中继到目标Web应用程序目标Web应用响应HTTP请求并将响应流式传输(分block传输)到代理2Proxy2将响应返回给Proxy1,后者又响应原始调用Client。代理应用程序是使用.NET4.5在ASP.NETWebAPIRTM中编写的。执行中继的代码如下所示://Controll

c# - 运行由 ASP.NET 网页请求触发的异步操作

我有一个异步操作,出于各种原因需要使用对ASP.NET网页的HTTP调用来触发该操作。当我的页面被请求时,它应该开始这个操作并立即向客户端返回一个确认。此方法也通过WCFWeb服务公开,并且运行良好。在我第一次尝试时,抛出了一个异常,告诉我:Asynchronousoperationsarenotallowedinthiscontext.PagestartinganasynchronousoperationhastohavetheAsyncattributesettotrueandanasynchronousoperationcanonlybestartedonapagepriorto

c# - 运行由 ASP.NET 网页请求触发的异步操作

我有一个异步操作,出于各种原因需要使用对ASP.NET网页的HTTP调用来触发该操作。当我的页面被请求时,它应该开始这个操作并立即向客户端返回一个确认。此方法也通过WCFWeb服务公开,并且运行良好。在我第一次尝试时,抛出了一个异常,告诉我:Asynchronousoperationsarenotallowedinthiscontext.PagestartinganasynchronousoperationhastohavetheAsyncattributesettotrueandanasynchronousoperationcanonlybestartedonapagepriorto

c# - 异步 Task.WhenAll 超时

在新的异步dotnet4.5库中有没有办法在Task.WhenAll上设置超时?方法?我想获取多个源,并在5秒后停止,并跳过未完成的源。 最佳答案 您可以使用Task.WhenAny()将生成的Task与Task.Delay()结合起来:awaitTask.WhenAny(Task.WhenAll(tasks),Task.Delay(timeout));如果您想在超时的情况下收获已完成的任务:varcompletedResults=tasks.Where(t=>t.Status==TaskStatus.RanToCompletion

c# - 异步 Task.WhenAll 超时

在新的异步dotnet4.5库中有没有办法在Task.WhenAll上设置超时?方法?我想获取多个源,并在5秒后停止,并跳过未完成的源。 最佳答案 您可以使用Task.WhenAny()将生成的Task与Task.Delay()结合起来:awaitTask.WhenAny(Task.WhenAll(tasks),Task.Delay(timeout));如果您想在超时的情况下收获已完成的任务:varcompletedResults=tasks.Where(t=>t.Status==TaskStatus.RanToCompletion