草庐IT

send_task

全部标签

c# - Task.Start/Wait 和 Async/Await 之间有什么区别?

我可能遗漏了一些东西,但这样做有什么区别:publicvoidMyMethod(){Taskt=Task.Factory.StartNew(DoSomethingThatTakesTime);t.Wait();UpdateLabelToSayItsComplete();}publicasyncvoidMyMethod(){varresult=Task.Factory.StartNew(DoSomethingThatTakesTime);awaitresult;UpdateLabelToSayItsComplete();}privatevoidDoSomethingThatTakesTi

c# - 何时正确使用 Task.Run 以及何时使用 async-await

我想请教您对何时使用Task.Run的正确架构的看法。我在WPF.NET4.5中遇到滞后的UI应用程序(使用CaliburnMicro框架)。基本上我在做(非常简化的代码片段):publicclassPageViewModel:IHandle{...publicasyncvoidHandle(SomeMessagemessage){ShowLoadingAnimation();//MakesUIverylaggy,butstillnotdeadawaitthis.contentLoader.LoadContentAsync();HideLoadingAnimation();}}publ

c# - 您是否必须将 Task.Run 放入方法中以使其异步?

我试图以最简单的形式理解异步等待。为了这个例子,我想创建一个非常简单的方法来添加两个数字,当然,它根本没有处理时间,只是在这里制定一个例子。示例1privateasyncTaskDoWork1Async(){intresult=1+2;}例子2privateasyncTaskDoWork2Async(){Task.Run(()=>{intresult=1+2;});}如果我等待DoWork1Async()代码是同步运行还是异步运行?我需要用Task.Run包装同步代码吗?使方法可等待且异步,以免阻塞UI线程?我想弄清楚我的方法是否是Task或返回Task我需要用Task.Run包装代码

c# - 什么时候用Task.Delay,什么时候用Thread.Sleep?

关于何时使用Task.Delay是否有好的规则?与Thread.Sleep?具体来说,是否有最低值(value)可以让一个比另一个有效/高效?最后,由于Task.Delay会导致异步/等待状态机上的上下文切换,使用它是否会产生开销? 最佳答案 使用Thread.Sleep当你想阻塞当前线程时。使用awaitTask.Delay当您想要逻辑延迟而不阻塞当前线程时。效率不应该是这些方法的首要问题。它们在现实世界中的主要用途是作为I/O操作的重试计时器,以秒而不是毫秒为单位。 关于c#-什么时

c# - 异步等待 Task<T> 超时完成

我想等待Task完成一些特殊规则:如果它在X毫秒后仍未完成,我想向用户显示一条消息。如果在Y毫秒后还没有完成,我想自动requestcancellation.我可以使用Task.ContinueWith异步等待任务完成(即安排在任务完成时执行的操作),但这不允许指定超时。我可以使用Task.Wait同步等待任务超时完成,但这会阻塞我的线程。如何异步等待任务完成并超时? 最佳答案 这个怎么样:inttimeout=1000;vartask=SomeOperationAsync();if(awaitTask.WhenAny(task,T

c# - 如果我的接口(interface)必须返回 Task 什么是无操作实现的最佳方法?

在下面的代码中,由于接口(interface)的原因,LazyBar类必须从其方法返回一个任务(并且为了参数的缘故不能更改)。如果LazyBar的实现不寻常,因为它恰好快速同步运行-从该方法返回无操作任务的最佳方法是什么?我已经使用了下面的Task.Delay(0),但是我想知道如果该函数被称为lot是否有任何性能副作用(为了论证,每秒说数百次):这种句法糖分会产生重大影响吗?它是否开始堵塞我的应用程序的线程池?编译器是否足以以不同方式处理Delay(0)?returnTask.Run(()=>{});会有什么不同吗?有没有更好的办法?usingSystem.Threading.Tas

c# - 我将如何同步运行异步 Task<T> 方法?

我正在学习async/await,遇到需要同步调用异步方法的情况。我该怎么做?异步方法:publicasyncTaskGetCustomers(){returnawaitService.GetCustomersAsync();}正常使用:publicasyncvoidGetCustomers(){customerList=awaitGetCustomers();}我试过使用以下方法:Tasktask=GetCustomers();task.Wait()Tasktask=GetCustomers();task.RunSynchronously();Tasktask=GetCustomer

javascript - 未捕获的 InvalidStateError : Failed to execute 'send' on 'WebSocket' : Still in CONNECTING state

当我的页面加载时,我尝试向服务器发送消息以启动连接,但它不起作用。这个脚本block靠近我的文件的顶部:varconnection=newWrapperWS();connection.ident();//varautoIdent=window.addEventListener('load',connection.ident(),false);大多数时候,我会在标题中看到错误:UncaughtInvalidStateError:Failedtoexecute'send'on'WebSocket':StillinCONNECTINGstate所以我尝试捕获异常,如下所示,但现在看来Inva

go - 如何将 "try send"写入 channel ,如果 channel 已满则中止?

我有一个经典的“生产者-消费者”问题的变体。在我的程序中,有10个生产者并行工作,他们的目标是总共生产N个产品。我考虑过使用缓冲channel:products:=make([]int,100)//Intotal,produce100products//Theproducersfori:=0;i但是,它不会起作用:goroutine没有意识到目标已经达到,channel发送阻塞,函数永远不会返回。iflen(products)不是原子操作,因此没有帮助。那么还有没有别的办法呢? 最佳答案 products:=make([]int,1

google-app-engine - 我可以通过queue.yaml配置延迟包使用的Task Queue吗?

其实都在主题中:当使用Go非常方便的延迟包时,我是否仍然可以上传一个queue.yaml文件并为“内置”队列配置限制等?如果是这样,队列名称是否只是“延迟”?还有其他限制吗? 最佳答案 我自己还没有尝试过,但是thispage说:Thedefaultqueueispreconfiguredwithathroughputrateof5taskinvocationspersecond.Ifyouwanttochangethepreconfiguredsettings,simplydefineaqueuenameddefaultinque