问题标签 [continuewith]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
continuewith - Task.ContinueWith 在异步代码中不是很流行?
我们希望并行执行调用 10 个任务并并行处理 10 个结果中的每一个。
为了实现,创建了一个任务列表并使用 continuewith 每个任务都与异步方法相关联,
片段
我想知道有没有更好的模式和 continuewith 不适合使用!
有时我们会收到这个错误,System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError error)
c# - c#异步更新http然后保存到本地数据库WhenAll ContinueWith时间
我有以下代码,除了在 WhenAll ... await Task.WhenAll(syncTasks).ContinueWith ... 在所有四种方法完成之前运行之外,它似乎运行良好。如果我在这里做错了什么,将不胜感激。我真的不觉得我了解如何安排复杂的异步功能以及似乎正在发生的事情支持这一点。这是在 Xamarin App BTW 中,尽管我认为这并不重要。
提前感谢任何可以提供一点清晰的人。将不胜感激。
c# - 线程安全的任务队列等待
我想做一件简单的事情(假设ContinueWith
是线程安全的):
问题:在上面的代码中await _task
立即返回,忽略是否有内部任务。
_task
可以延长多个 的扩展需求,ContinueWith
我将如何等待它们全部完成?
当然,我可以尝试以旧的线程安全方式进行操作:
或者通过将任务存储在线程安全集合中并使用Task.WaitAll
.
但我很好奇第一个片段是否有一个简单的修复方法?
c# - 如何更好地在 C# 中将 continueWith 替换为 async/await
我有C#
代码:
我需要更换continueWith
为await
. 我在这个例子中尝试:
但是taskDisposeTokenUnreg
没有领域Result
,你不能那样写await taskCompletionSource.Task.Result
。如何最好地替换此代码?
c# - IBackgroundJobManager 使用“ContinueWith”的顺序作业
我正在使用IBackgroundJobManager
Hangfire 集成。
用例:
我正在处理一个上传的文件。文件保存后,我想Abp.BackgroundJobs
依次启动两个单独的。只有在第一个作业完成后,才能开始第二个作业。
这是我的代码:
问题:
我无法弄清楚使用.ContinueWith<???>(???)
.
c# - ContinueWith Method - 如何准确理解它?
所以我在这里有这个代码:
我知道第二个任务在第一个任务完成后执行。我必须为第二个任务提供一个参数,它也是类型任务。
这个“论点”是旧任务还是一个全新的实例?
例如,当我想在第二个任务中处理第一个任务的取消时,我是否必须调用:
初始任务.IsCanceled
或者
参数.IsCanceled
?
c# - 任务继续意外行为
请看下面的代码:
Default
因此,我获取当前上下文(WinForms 线程),使用该上下文启动一个新任务,并使用任务调度程序附加一个同步延续。据我了解,延续应该从线程池线程开始。UI 线程不属于线程池。但相反,包括延续在内的所有代码都在同一个线程上同步运行。这对我来说是非常出乎意料的。
顺便说一句,如果我将延续选项设置为TaskContinuationOptions.None
,它应该在另一个线程上运行。似乎延续选项优先于任务调度程序,尽管它们只是提示并且调度程序是必需的。
这是错误还是预期的行为?
我可以做些什么来保证 UI 线程之外的延续代码独立于父任务上下文和延续选项运行?一些自定义任务计划程序?
注意:我知道这是一个遗留代码,并且 async/await 是要走的路。
c# - 在 ForEach 循环中链接顺序异步任务:这是一个好方法吗?
我正在开发一个 Windows 服务,我有两个相互依赖的相关调用,我想为每个“对”或“一组”调用异步运行。有几种方法可以做到这一点,我尝试了几种不同的方法并解决了这个问题,因为使用一个代码块来处理比两个单独的块具有自己的等待Task.WhenAll()
调用更方便。在我的测试中,这似乎按预期工作,但我以前从未像这样将两个任务链接在一起,我想知道这是否是一个好方法,是否可能有更合适的方法来获得相同的结果(单个代码块)。
这就是我所拥有的。这看起来像是一种合理的链接任务的方式吗?如果不是,请告诉我原因。
提前致谢。-坦率
c# - .NET TaskCompletionSource 任务何时有资格进行 GC(非 root)?
我正在为一些异步代码编写一个实用程序类,并且我想确保我不会在设计中造成内存泄漏。假设我的代码执行类似于下面的类。(显然你不会编写像这样工作的代码,但我有几个代码路径都汇聚成一个底层函数,其中一个代码路径有效地做到了这一点)。代码中的关键点是我的代码中没有任何内容包含对 theTaskCompletionSource
或其Task
.
假设 Foo 实例是根据需要创建的,并且不是永久植根的。tcs.Task
扎根了吗?更重要的是,假设request
永远不会完成,因此不会设置结果。会tcs.Task
永远闲逛吗?接续任务呢?或者,它们的生命周期是否依赖于 Foo 对象,并且当 Foo 实例被 GC-ed 时它们会消失?
c# - 使用 Task.ContinueWith 排队处理 H.264 帧的任务会导致内存问题
我的应用程序使用 RTSPClientSharp 库从相机流式传输,当解码帧准备好时,会引发一个 OnFramesReceived 事件。我在同一个事件中将解码帧转换为位图,这是一个阻塞调用,耗时超过 100 毫秒,导致帧速率降至 10 FPS。
为了解决这个问题,我使用了此处的任务队列代码,该代码使用 Task.ContinueWith.UnWrap 将 ProcessFrame 事件(具有将解码帧转换为位图的代码)排队。我的目标是按照收到帧的顺序依次执行 ProcessFrame 调用。使用任务队列解决了阻塞呼叫的问题,现在我可以每秒处理 30 帧。
但是,我现在遇到了内存问题,如果我的应用程序运行时间更长,内存使用量会逐渐增加。ANTS 内存分析器说(检查屏幕截图) ContinuationResultFrom 任务是 Gen2 中最大的类。
更新 我想包括的一些事实,我有 10 个这样的摄像头连接到我的应用程序,每个摄像头都有自己的摄像头类实例。我正在使用具有超线程和 32GB RAM 的 16 核处理器,但如果 CPU 无法处理负载,我宁愿将 FPS 降低到 10。