TOGOUTECH

c# - 在异步任务中使用 HttpContext

我有以下mvc操作。publicasyncTask<JsonResult>DoSomeLongRunningOperation(){returnawaitTask.Run(()=>{//Doalotoflongrunningstuff//TheunderlyingframeworkusestheHttpContext.Current.User.Identity.Namesotheuserispassedonthemessagebus.}}在任务中,HttpContext变为空。我们做了很多欺骗,但没有任何东西可以确保HttpContext在我们的新线程中始终可用。是否

c# - .NET 的 WebBrowser 类的异步/等待实现

老读者,第一次张贴在这里。我的目标:能够在使用WebBrowser类时利用async/await。由于WebBrowser.Navigate(stringurl)是一种异步方法,在触发LoadComplete事件之前您无法检查html文档。到目前为止,这是我的(工作)代码:publicclassAsyncWebBrowser{protectedWebBrowserm_WebBrowser;privateManualResetEventm_MRE=newManualResetEvent(false);publicvoidSetBrowser(WebBrowserbrowser){this

c# - Async/await 作为协程的替代品

我使用C#迭代器替代协程,它一直运行良好。我想切换到async/await,因为我认为它的语法更清晰并且它给了我类型安全性。Inthis(outdated)blogpost,JonSkeetshowsapossiblewaytoimplementit.我选择了一种稍微不同的方式(通过实现我自己的SynchronizationContext并使用Task.Yield)。这很好用。然后我意识到会有问题;目前协程不必完成运行。它可以在任何让步的地方优雅地停止。我们可能有这样的代码:privateIEnumeratorSleep(intmilliseconds){Stopwatchtimer=

c# - 如何在 EF6 异步中启动实体存储过程而不等待返回?

我只想将调用发送到SQLServer,而不是等待返回。我有一个从存储过程导入的实体函数,我想在EntityFramework6.0.0-rc1中以这种方式异步调用它。这可能吗?语法是什么?EntityFunction:RecalculateBudgetNumbers(intid) 最佳答案 启动一个新的Task,创建一个新的数据上下文并调用该函数。只是不要等待/等待该任务。让它自己运行直到完成。确保记录错误。不要吞下异常,因为它们可能是您想了解的错误。在ASP.NET设置中,请注意工作进程可以随时回收,因此您的后台工作可能会突然消失

c# - 未实现/支持/无效操作异步方法

将异步方法标记为未实现/不支持或无效操作的正确方法是什么。为简单起见,我将在示例中仅使用NotImplementedException,但该问题也适用于NotSupportedException和InvalidOperationException。以一种同步的方式,一个人会简单地抛出异常:publicoverridevoidX(){thrownewNotImplementedException();}在异步世界中这段代码相当于什么?/*1*/publicoverrideTaskXAsync(){thrownewNotImplementedException();}或者/*2*/publ

c# - 相当于 Promise.then() 的任务是什么?

通过使用Promise(s)为TypeScript添加async/await,在语法上看起来非常接近Task(s)。例子:promise(TS)publicasyncmyAsyncFun():Promise<T>{letvalue:T=await...returnvalue;}任务(C#)publicasyncTask<T>MyAsyncFun(){Tvalue=await...returnvalue;}我想知道是否反过来,对于Task(s)是否存在等同于.then()的方法。例子:promise(TS)Promise<T>promise=...pr

c# - 异步任务与异步无效

这可能是一个非常愚蠢的问题,但我有以下代码行可以将RAW图像转换为BitmapImages:publicasyncvoidCreateImageThumbnails(stringimagePath,intimgId){awaitTask.Run(()=>controlCollection.Where(x=>x.ImageId==imgId).FirstOrDefault().ImageSource=ThumbnailCreator.CreateThumbnail(imagePath));}调用此方法CreateThumbnail()publicstaticBitmapIma

c# - 在库的异步方法中总是使用 'async' 和 'await' 关键字?

总结:在库方法中,什么时候应该使用async和await关键字而不是返回Task直接?我相信我的问题与thisone有关.但是,这个问题是关于.NET4.0的。和TPL,同时我将.NET4.6与async一起使用和await关键字。因此,我认为我的问题可能会得到不同的答案,因为在回答链接问题时这些关键字不存在。说明:我正在为外部WCF服务编写一个简单的包装器,该包装器生成多个SendAsync电话。现在我认为每个包装器方法应该只返回一个Task<>。直接不用等待。我的理解是async/await应该在应用层使用,不在库中使用。因此,例如,这是我认为我应该为每个包装器方法采用

c# - 从异步方法返回输出时推荐的方法签名?

我有一个异步方法:publicasyncTask<BitmapSource>GetBitmapAsync(double[]pixels);假设我也有这门课:publicclassPixelData{publicdouble[]Pixels{get;}}我现在想创建一个生成BitmapSource的便捷方法输出,使用上面的异步方法来完成工作。我至少可以想出三种方法来做到这一点,但从效率和可靠性的角度来看,我并不清楚应该选择哪一种。有人可以指教吗?以下每种方法的优点和缺点是什么?选项A创建一个返回Result的同步方法的Task:publicBitmapSourceGetBit

c# - 将覆盖的成员更改为异步

我正在覆盖基类库中的一个方法。但是,在我重写的实现中,我使用的是新的HttpClient,它全部基于异步方法。因此,我必须将我的方法标记为异步,这意味着我需要将方法的返回参数从字符串更改为任务。然而,编译器给出了一个错误:“返回类型必须是‘字符串’才能匹配覆盖的成员……”publicclassBaseClass{publicvirtualstringGetName(){...}}publicclassMyClass:BaseClass{publicoverrideasyncTask<string>GetName(){HttpClienthttpClient=newHttpC