task-parallel-library
全部标签 我的应用程序中的所有服务调用都是作为任务实现的。当任务出现故障时,我需要向用户显示一个对话框以重试上次失败的操作。如果用户选择重试,程序应该重试该任务,否则程序的执行应该在记录异常后继续。任何人都对如何实现此功能有一个高层次的想法? 最佳答案 2017年5月更新C#6异常过滤器使catch子句更加简单:privatestaticasyncTaskRetry(Funcfunc,intretryCount){while(true){try{varresult=awaitTask.Run(func);returnresult;}catch
我有一些代码在名为ListofObjects的obj对象列表上像这样工作:ListNewListofObjects();Parallel.ForEach(ListofObjects,obj=>//DosomeoperationshereonobjtogetanewobjNewListofObjects.Add(newobj););现在我退出了Parallel.ForEach循环,我想对NewListofObjects进行操作。但是,当我尝试执行以下操作时出现此错误:“尝试读取或写入protected内存。这通常表示其他内存已损坏”。这是因为我的NewListofObjects.Add(
如何获取对执行代码的任务的引用?ISomeInterfaceimpl=newSomeImplementation();Task.Factory.StartNew(()=>impl.MethodFromSomeInterface(),newMyState());...voidMethodFromSomeInterface(){TaskcurrentTask=Task.GetCurrentTask();//Nosuchmethod?MyStatestate=(MyState)currentTask.AsyncState();}因为我正在调用一些接口(interface)方法,所以我不能只将
我有以下情况,我认为这可能很常见:有一个任务(UI命令处理程序)可以同步或异步完成。命令到达的速度可能比处理它们的速度快。如果某个命令已经有待处理的任务,则新的命令处理程序任务应按顺序排队和处理。每个新任务的结果可能取决于前一个任务的结果。取消应该被观察到,但为了简单起见,我想将它留在这个问题的范围之外。此外,线程安全(并发)不是必需的,但必须支持可重入。这是我试图实现的基本示例(为简单起见,作为控制台应用程序):usingSystem;usingSystem.Threading.Tasks;namespaceConsoleApp{classProgram{staticvoidMain
我想运行一个Task它有一个“heartbeat”,它会在特定的时间间隔内持续运行,直到任务完成。我认为像这样的扩展方法会很好用:publicstaticasyncTaskWithHeartbeat(thisTaskprimaryTask,TimeSpanheartbeatInterval,ActionheartbeatAction,CancellationTokencancellationToken)例如:publicclassProgram{publicstaticvoidMain(){varcancelTokenSource=newCancellationTokenSource(
我希望能够从F#使用C#库。大多数情况下,这非常简单。但是,如果我尝试调用返回Task的函数我无法获得返回值。所以,我有具有以下定义的C#方法:publicasyncTaskReadEventAsync(stringstreamName,intposition)whereTEvent:class我正在尝试使用F#中的这个方法,如下所示:letreadEventFromEventStore(eventStore:IEventStoreRepository)(streamName:string)(position:int)=async{returneventStore.ReadEventA
如何通过oledbreader在Excel中检查单元格是否包含公式?System.Data.OleDb.OleDbConnectionconn2=newSystem.Data.OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;DataSource="+strFileName+";ExtendedProperties=\"Excel8.0;HDR=NO;IMEX=1\";");conn2.Open();stringstrQuery2="SELECT*FROM["+Table+"]";System.Data.OleDb.Ole
如果我有一个普通的方法,我想使其异步:publicintFoo(){}我会这样做:publicTaskFooAsync(){returnTask.Run(()=>Foo());}我为什么要这样做:publicasyncTaskFooAsync(){returnawaitTask.Run(()=>Foo());}我打算使用它的方式是:FooAsync().ContinueWith((res)=>{});我希望该方法不间断地运行,但我希望触发回调之类的东西,因此ContinueWith。但是对于第二个版本,使用它有什么意义吗? 最佳答案
等效的asp.netmvc4.0代码是什么样的?usingSystem.Net;usingSystem.Net.Http;usingSystem.Web.Mvc;usingSystem.Threading.Tasks;usingNewtonsoft.Json;namespaceWeb.Controllers{publicclassHomeController:Controller{privateHttpClienthttpClient=newHttpClient();privatestaticdynamicshots;publicasyncTaskIndex(){if(shots==n
我正在考虑在具有事件驱动逻辑的MMO游戏服务器中使用C#async\await。让我们假设有数千个实体在已知持续时间内做一些工作。所以我想为我的每个游戏对象调用Time.Delay()。(这是与普通无限循环相反的方法,每个游戏对象都有一些Update()调用。)有人知道Task.Delay()是如何实现的吗?它使用定时器吗?系统资源占用大吗?是否可以同时生成数千个Task.Delay()调用? 最佳答案 Task.Delay实现如下:publicstaticTaskDelay(intmillisecondsDelay,Cancell