草庐IT

多任务loss优化

全部标签

c# - 我应该对每个返回任务的方法使用异步/等待吗

这个问题在这里已经有了答案:Whyuseasyncandreturnawait,whenyoucanreturnTaskdirectly?(8个答案)关闭4个月前。假设我有一个C#Controller,它调用某个返回任务的任意函数(例如,因为它执行数据库事务)。我应该始终使用async和await,还是应该只返回任务?示例Controller:publicasyncTaskDoSomething(){returnawaitSomeOtherFunctionThatReturnsATask();}我应该把它改成:publicTaskDoSomething(){returnSomeOthe

c# - 在 TPL 中返回一个空的静态任务是一种不好的做法吗?

有些情况下我想有条件地运行任务。我使用这样的某种扩展方法:publicstaticclassMyTaskExtension{privatestaticTasktheEmptyTask=Task.Factory.StartNew(()=>{});//ThisisthequestionpublicstaticTaskContinueWith(thisTasktask,TaskcontinuationTask,Funccondition){ifcondition(){...dothework}returntheEmptyTask;}}我的期望是theEmptyTask已经完成,所以基本上如果

c# - 如果我等待一个已经在运行或运行的任务,会发生什么?

有一个Task变量,可以说任务现在正在运行......通过执行以下行。await_task;我想知道当我写这段代码时会发生什么:await_task;await_task;它会执行两次任务吗?或者因为它已经运行而抛出异常? 最佳答案 woulditexecutethetasktwice?Orthrowanexceptionbecauseithasalreadyrun?没有也没有。唯一await就是调用Task.GetAwaiter,它不会导致任何东西运行。如果任务已经运行完成,如果它是Task,它将提取值。,或者如果是Task则同步

c# - MS C# 编译器和非优化代码

注意:我注意到我发布的示例中存在一些错误-编辑以修复它如果您不启用优化,官方C#编译器会做一些有趣的事情。例如,一个简单的if语句:intx;//...//if(x==10)//dosomething优化后会变成下面这样:ldloc.0ldc.i4.s10ceqbne.un.sdo_not_do_something//dosomethingdo_not_do_something:但是如果我们禁用优化,它就会变成这样:ldloc.0ldc.i4.s10ceqldc.i4.0ceqstloc.1ldloc.1brtrue.sdo_not_do_something//dosomethingd

c# - 从 ASP.NET Core 中的 Controller 操作运行后台任务

我正在使用C#和ASP.NETCore2.0开发带有RESTAPI的Web应用程序。我想要实现的是,当客户端向端点发送请求时,我将运行一个与客户端请求上下文分离的后台任务,如果任务成功启动,该任务将结束。我知道有HostedService但问题是HostedService在服务器启动时启动,据我所知没有办法启动HostedService从Controller手动。这是演示问题的简单代码。[Authorize(AuthenticationSchemes="UsersScheme")]publicclassUsersController:Controller{[HttpPost]publi

c# - 为什么任务甚至在等待中完成

我在下面的代码中遇到问题:staticvoidMain(string[]args){TasknewTask=Task.Factory.StartNew(MainTask);newTask.ContinueWith((TasksomeTask)=>{Console.WriteLine("MainState="+someTask.Status.ToString()+"IsFaulted="+someTask.IsFaulted+"isComplete="+someTask.IsCompleted);});while(true){}}staticasyncTaskMainTask(){Con

c# - 检查 url 是否可达 - 帮助优化类

net4和c#。如果Uri(字符串)返回HTTPstatuscodes200,我需要一个能够返回Bool值的类.目前我有这段代码(它使用尝试查看是否可以连接到Uri)但我想用“HttpStatusCode.OK”来实现。您知道更好的方法吗?谢谢。publicstaticboolIsReachableUri(stringuriInput){//VariabletoReturnbooltestStatus;//CreatearequestfortheURL.WebRequestrequest=WebRequest.Create(uriInput);request.Timeout=15000

c# - 如何创建任务<>我可以手动完成

在对组件进行单元测试时,我需要验证组件如何对在不同时间完成的任务使用react。如何创建Task我可以随意解决? 最佳答案 您可以使用TaskCompletionSource创建一个完全“手动”的任务。RepresentstheproducersideofaTaskunboundtoadelegate,providingaccesstotheconsumersidethroughtheTaskproperty.将完成源的Task属性交给消费者,并(随意)调用SetResult来完成任务。请注意,您还有SetCanceled和SetE

c# - 如何在 ASP.NET Web API 中对后台任务进行排队

我有一个webapi,旨在以队列方式处理报告。应用程序执行的步骤如下:接收内容将内容映射到一个对象并将其放入队列轮询队列中的未决项目一次处理一个队列中的项目我在考虑使用EntityFramework来创建一个队列项目的数据库,例如:publicclassEFBatchItem{[Key]publicstringBatchId{get;set;}publicDateTimeDateCreated{get;set;}publicDateTimeDateCompleted{get;set;}publicstringBatchItem{get;set;}publicBatchStatusSta

c# - 在 C# 中启动许多异步任务的语法

我在使用C#中的新异步/等待工具时遇到问题。这是我的场景:staticasyncTaskManageSomeRemoteTask(intId,boolflag){varresult=awaitserviceClient.AuthenticateIdAsync(Id);[...SetupSomeData...]awaitserviceClient.LongAndSlowRemoteCallAsync(Data);}staticvoidSendATonOfJunkToSomeWebServiceThatDoesntSupportBatches{varmyTasks=Dictionary>(