草庐IT

async_condition_variable

全部标签

c# - 它有什么区别 - 使用 Task.Run 运行 'async' Action 委托(delegate)(与默认 Action 委托(delegate)相比)?

我正在努力了解async/await并认为我确实了解有关用法的一些事情。但仍然不太清楚在下面的场景中实际好处是什么。查看Task.Run用法。第一种方法使用普通委托(delegate)并使用Thread.Sleep,但第二种方法使用“异步”委托(delegate)和Task.Delay。我的问题是:这对这个方法有什么影响(或没有影响)?该方法本身是一个异步方法。该代码正在创建一个单独的线程(通过Task.Run),并且该线程除了执行该委托(delegate)之外别无他法。因此,即使它在Task.Delay上产生等待,在这种情况下有什么用,因为线程无论如何都是一个孤立的线程,不用于任何其

c# - 在实现具有同步和异步 API 的库以实现相同功能时使用 async await

关于如何在库中提供相同功能的同步和异步实现,我有几个问题。我会先问他们,然后提供下面的示例代码(实际上很多,但实际上很简单)。有没有办法避免违反DRY原则?考虑JsonStreamReader.Read的实现,JsonStreamWriter.Write,JsonStreamWriter.Flush,ProtocolMessenger.Send,ProtocolMessenger.Receive及其异步版本。在对同一方法的同步和异步版本进行单元测试时,是否有一种方法可以避免违反DRY原则?我正在使用NUnit,尽管我想所有框架在这方面应该都是一样的。应该如何实现返回Task的方法或Ta

c# - "Closure over variable gives slightly worse performance"。如何?

在回答SO问题时,我被告知我的解决方案将引入一个变量闭包,因此它的性能会稍差一些。所以我的问题是:如何关闭?它将如何影响性能?这是questionList.Where(s=>s.ValidDate.Date==DateTime.Today.Year).ToList();这是我的solution.我引入了变量yr来存储年份。intyr=DateTime.Now.Year;List.Where(s=>s.ValidDate.Year==yr).ToList();它在答案的comments中 最佳答案 首先,这两种解决方案在功能上并不等同

c# - 了解一行中使用的 Task.Run + Wait() + async + await 的使用

我是C#新手,所以我在理解一些概念时遇到了困难,并且遇到了一段我不太理解的代码:staticvoidMain(string[]args){Task.Run(async()=>{awaitSomeClass.Initiate(newConfiguration());}).Wait();while(true);}据我了解,这会运行一个启动方法的任务。此方法运行,然后,一旦完成,就会进入无限循环等待。感觉要么是代码没看懂,要么是我没理解对。谢谢 最佳答案 你可以把它分成几个部分:async()=>{awaitSomeClass.Initi

c# - 为什么 void async 不好?

所以我理解为什么从async返回void通常是没有意义的,但我遇到过我认为它完全有效的情况。考虑以下人为的示例:protectedoverridevoidOnLoad(EventArgse){if(CustomTask==null)//Donotawaitanything,letOnLoadreturn.PrimeCustomTask();}privateTaskCompletionSourceCustomTask;//IDONOTcareaboutthereturnvaluefromthis.Sowhyisvoidbad?privateasyncvoidPrimeCustomTask

C# async/await - 限制调用异步方法/锁定的次数

我来自C++世界,所以我非常习惯锁定线程和互斥保护。假设这个基本功能:asyncTaskBasicProcess(){//awaittimeconsumingtask}如何锁定此函数,以便一次只能运行一个BasicProcess?这是我想要实现的:asyncTaskBasicProcess(){lock(BasicProcessLock){//awaittimeconsumingtask}} 最佳答案 你可以为此使用SemaphoreSlim(1),用(1)创建的SemaphoreSlim将确保只有一个线程可以获得锁,任何其他试图获

c# - 找不到类型或命名空间名称 'async'

在VS2012.2中,我有一个面向.NET4.5的ASP.NETMVC4应用程序,如果我使用async关键字,它会按预期工作。在大约同时创建的类库项目中,目标是4.5,我不能使用async关键字。所以我创建了一个新的ASP.NETMVC4(4.5)网络应用程序项目,但我再次无法使用asyncTypeornamespacename'async'couldnotbefound这是我觉得自己在做一些完全愚蠢的事情的问题之一。毕竟,我整个周末都在勒芒观看比赛并喝酒。我的意思是,它应该适用于任何.NET4.5项目,对吧?它是一个编译器功能。 最佳答案

Angular,NGRX/Store,以单个序列为单一的select和async调用

有人知道是否有机会从商店获得价值,然后致电AngularHTTP服务?请参见下面的示例。提前致谢。我有一个使用异步方法的服务。在此方法中,我调用AngularHTTP服务,但是在调用AngularHTTP服务之前,我想从商店(Oauth访问令牌)检索一些值。问题是我将Oauth令牌存储在商店中,我必须将令牌添加到请求中。如果服务器响应401错误,则我刷新令牌并重复请求或新令牌请求。@Injectable()exportclassInterceptor{publicget(request:Request):Observable{returnthis.store.select((s)=>s.ses

c# - VS 2015 中的 RazorEngine 模板 - 功能 'implicitly typed local variable' 在 c# 2 中不可用

在我的VS2015项目中打开RazorEnginecshtml模板文件时出现以下错误。Feature'implicitlytypedlocalvariable'isnotavailableinc#2.Pleaseuselanguageversion3orgreater.模板编译正确,只是智能感知有问题。项目设置为在构建时使用.net4.5。该应用程序也不是ASP.Net,而是桌面应用程序。intellisense在VS2013中也能正常工作。升级到VS2015后出现此问题。有没有人有类似的问题,可以建议如何解决这个问题? 最佳答案

c# - 为什么 async 关键字在编译时会生成一个枚举器和附加结构?

如果我创建一个像下面这样的简单类:publicclassTestClass{publicTaskTestMethod(intsomeParameter){returnTask.FromResult(someParameter);}publicasyncTaskTestMethod(boolsomeParameter){awaitTask.FromResult(someParameter);}}并在NDepend中检查它,它表明TestMethod采取行动并成为asyncTask有一个为它生成的结构,带有一个枚举器、枚举器状态机和一些额外的东西。为什么编译器会生成一个名为TestClas