草庐IT

多任务

全部标签

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

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

c# - 如何获取当前任务引用?

如何获取对执行代码的任务的引用?ISomeInterfaceimpl=newSomeImplementation();Task.Factory.StartNew(()=>impl.MethodFromSomeInterface(),newMyState());...voidMethodFromSomeInterface(){TaskcurrentTask=Task.GetCurrentTask();//Nosuchmethod?MyStatestate=(MyState)currentTask.AsyncState();}因为我正在调用一些接口(interface)方法,所以我不能只将

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

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

c# - 任务排序和重新进入

我有以下情况,我认为这可能很常见:有一个任务(UI命令处理程序)可以同步或异步完成。命令到达的速度可能比处理它们的速度快。如果某个命令已经有待处理的任务,则新的命令处理程序任务应按顺序排队和处理。每个新任务的结果可能取决于前一个任务的结果。取消应该被观察到,但为了简单起见,我想将它留在这个问题的范围之外。此外,线程安全(并发)不是必需的,但必须支持可重入。这是我试图实现的基本示例(为简单起见,作为控制台应用程序):usingSystem;usingSystem.Threading.Tasks;namespaceConsoleApp{classProgram{staticvoidMain

c# - 创建带有心跳的任务

我想运行一个Task它有一个“heartbeat”,它会在特定的时间间隔内持续运行,直到任务完成。我认为像这样的扩展方法会很好用:publicstaticasyncTaskWithHeartbeat(thisTaskprimaryTask,TimeSpanheartbeatInterval,ActionheartbeatAction,CancellationTokencancellationToken)例如:publicclassProgram{publicstaticvoidMain(){varcancelTokenSource=newCancellationTokenSource(

c# - 如何使用异步/等待方法管理类似 NDC 的 log4net 堆栈? (每个任务堆栈?)

在普通/同步/单线程控制台应用程序中,NDC.Push可以很好地管理“当前项目”(可能在多个嵌套级别,但对于本示例只有1个级别)。例如:privatestaticILogs_logger=LogManager.GetLogger("Program");staticvoidMain(string[]args){BasicConfigurator.Configure();DoSomeWork("chunk1");DoSomeWork("chunk2");DoSomeWork("chunk3");}staticvoidDoSomeWork(stringchunkName){using(NDC

c# - 异步任务方法后触发回调

我需要在foreach时触发回调循环已完成对List中每个项目的搜索.privateasyncvoidstartSearchBtn_Click(objectsender,EventArgse){awaitSearch(files,selectTxcDirectory.SelectedPath,status);}privatestaticasyncTaskSearch(Listfiles,stringpath,LabelstatusText){foreach(stringfileinfiles){XmlDocumentxmlDoc=newXmlDocument();xmlDoc.Load

c# - 如何运行多个任务,处理异常并仍然返回结果

我正在更新我的并发技能。我的问题似乎相当普遍:从多个Uris读取、解析和处理结果等。我有ConcurrencyinC#Cookbook.有几个使用GetStringAsync的示例,例如staticasyncTaskDownloadAllAsync(IEnumerableurls){varhttpClient=newHttpClient();vardownloads=urls.Select(url=>httpClient.GetStringAsync(url));Task[]downloadTasks=downloads.ToArray();string[]htmlPages=awai

c# - 将两个并行任务的结果合并到一个列表中

我想将2个任务的结果合并到一个列表集合中。确保-我想并行运行这两种方法。代码:ListtotalEmployees=newList();方法一:publicasyncTask>SearchEmployeeFromDb();方法二:publicasyncTask>GetEmployeeFromService();现在,我想将这两个方法的结果保存在totalEmployees字段中,而且这两个方法应该异步运行。 最佳答案 虽然许多答案都很接近,但最干净、最有效的选择是使用Task.WhenAll结合SelectMany:asyncTas

c# - 阻止 Visual Studio 中断任务中的异常

我有以下代码:Taskload=Task.Factory.StartNew(()=>{//SomeStuffWhichThrowsanException});try{load.Wait();}catch(AggregateExceptionex){MessageBox.Show("Error!");}每当任务中抛出异常时,我希望它冒泡并被trycatch捕获,而不是VisualStudio在异常发生时中断。我试过谷歌,有人建议我在我的方法之上添加这个[DebuggerHidden],但它不起作用。 最佳答案 好的,我知道怎么做了。答