草庐IT

task_struct

全部标签

c# - 为什么调用不明确? 'Task.Run(Action)' 和 'Task.Run(Func<Task>)'

考虑以下代码:publicvoidCacheData(){Task.Run((Action)CacheExternalData);Task.Run(()=>CacheExternalData());Task.Run(CacheExternalDataTask);Task.Run(CacheExternalData);}publicTaskCacheExternalDataTask(){//LongrunningcodereturnTask.FromResult("Data");}publicvoidCacheExternalData(){//Longrunningcode}为什么Tas

c# - 拦截通过 DynamicProxy 返回通用 Task<> 的异步方法

我的问题与这篇文章有关InterceptthecalltoanasyncmethodusingDynamicProxy我想实现与返回Task的异步方法一起工作的拦截器或Task结果。我使用下一个代码返回ContinueWith结果(以便调用方方法在拦截器完成工作时等待)vartask=invocation.ReturnValueasTask;invocation.ReturnValue=task.ContinueWith(c=>{codethatshouldexecuteaftermethodfinish});以上代码适用于Task结果,但在Task的情况下结果ContinueWith

c# - .NET 4.6 的 Task.CompletedTask 有什么意义?

Thisblogpost提到了新的任务API,包括一个新的Task.CompletedTask.NET4.6中引入的属性。为什么添加这个?这比Task.FromResult(whatever)有什么好处? 最佳答案 Task.FromResult(whatever)适用于Task,但在4.6之前,非通用任务没有任何内容。你可以使用FromResult使用虚拟值并将其隐式转换为Task,但这有点混淆了意图(您实际上并没有返回任何异步值)并在下面分配对象(而CompletedTask可以缓存并在所有调用者之间共享)。在当前(4.5.2及

c# - Task.WaitAll 在 ASP.NET 中挂起多个等待任务

下面是我遇到问题的代码的简化版本。当我在控制台应用程序中运行它时,它按预期工作。所有查询并行运行,Task.WaitAll()在它们全部完成时返回。但是,当此代码在Web应用程序中运行时,请求就会挂起。当我附加调试器并全部中断时,它显示执行正在等待Task.WaitAll()。第一个任务已经完成,但其他任务从未完成。我不明白为什么它在ASP.NET中运行时挂起,但在控制台应用程序中运行良好。publicFoo[]DoWork(int[]values){intcount=values.Length;Task[]tasks=newTask[count];for(inti=0;iGetFoo

c# - 使用 Tasks (TPL) 库会使应用程序多线程吗?

最近在接受采访时,我被问到了这个问题。问:你写过多线程应用程序吗?答:是的问:介意解释更多吗?答:我用过Tasks(任务并行库)执行一些任务,如waitingforsomeinfofrominternetwhileloadingUI.这提高了我的应用程序可用性。问:但是,刚刚你用过TPL表示您写了一个multithreaded应用?我:(不知道说什么1)那么,究竟什么是多线程应用程序?和用Tasks有区别吗? 最佳答案 任务可用于表示在多个线程上发生的操作,但它们不是必须的。可以编写仅在单个线程中执行的复杂TPL应用程序。例如,当您

c# - 为什么不能将 IEnumerable<struct> 转换为 IEnumerable<object>?

为什么不允许最后一行?IEnumerabledoubleenumerable=newList{1,2};IEnumerablestringenumerable=newList{"a","b"};IEnumerableobjects1=stringenumerable;//OKIEnumerableobjects2=doubleenumerable;//Notallowed这是因为double不是从对象派生的值类型,因此协方差不起作用吗?这是否意味着没有办法使这项工作:publicinterfaceIMyInterface{stringMethod();}publicclassMyCla

c# - 异步方法中的 Await 与 Task.Result

这个问题在这里已经有了答案:WhatisthedifferencebetweenawaitTaskandTask.Result?(2个答案)关闭7年前。执行以下操作有什么区别:asyncTaskmethod(){varr=awaitdynamodb.GetItemAsync(...)returnr.Item;}对比asyncTaskmethod(){vartask=dynamodb.GetItemAsync(...)returntask.Result.Item;}在我的例子中,出于某种原因,只有第二个有效。第一个似乎永远不会结束。

c# - 在 Task.Run 中使用 CancellationToken 超时不起作用

这个问题在这里已经有了答案:HowtocancelaTaskinawait?(4个答案)关闭2年前。好的,我的问题很简单。为什么这段代码不会抛出TaskCancelledException?staticvoidMain(){varv=Task.Run(()=>{Thread.Sleep(1000);return10;},newCancellationTokenSource(500).Token).Result;Console.WriteLine(v);//thisoutputs10-insteadofthrowingerror.Console.Read();}但是这个有效staticv

python - Celery & RabbitMQ 作为 docker 容器运行 : Received unregistered task of type '...'

我对docker、celery和rabbitMQ比较陌生。在我们的项目中,我们目前有以下设置:1个运行多个docker容器的物理主机:1xrabbitmq:3-管理容器#pullimagefromdockerhubandinstalldockerpullrabbitmq:3-management#rundockerimagedockerrun-d-eRABBITMQ_NODENAME=my-rabbit--namesome-rabbit-p8080:15672-p5672:5672rabbitmq:3-management1xcelery容器#pulldockerimagefromdo

python - Celery & RabbitMQ 作为 docker 容器运行 : Received unregistered task of type '...'

我对docker、celery和rabbitMQ比较陌生。在我们的项目中,我们目前有以下设置:1个运行多个docker容器的物理主机:1xrabbitmq:3-管理容器#pullimagefromdockerhubandinstalldockerpullrabbitmq:3-management#rundockerimagedockerrun-d-eRABBITMQ_NODENAME=my-rabbit--namesome-rabbit-p8080:15672-p5672:5672rabbitmq:3-management1xcelery容器#pulldockerimagefromdo