c# - Task.Factory.StartNew,保持同一线程

标签 c# task-parallel-library

我喜欢一个线程可以被多个任务重用,但是我可以强制一个任务只在同一个线程中运行吗?

后续 很高兴回来看到 5 次降级。其实我认为这个问题是有相关性的。今天我使用线程,这工作正常,但线程大部分时间都在休眠。任务可以解决这个问题。但线程使用的资源只能从同一线程创建和访问。现在你知道我为什么问了。

最佳答案

是的,您可以通过使用 TaskScheduler 或使用 SynchronizationContext 来完成此操作。这两种方法都允许您在同一线程下运行任意数量的任务,甚至可能是创建该任务的线程。

如果您在已存在 SynchronizationContext 的 UI 上下文中创建任务,则只需将其传入即可。如果没有,则需要创建自己的上下文以将两者传递给任务并确定应如何执行传递给它的任务。如果您愿意,您可以创建一个新的同步上下文,为其分配一些任务,然后让它在当前线程中执行所有任务。 Here是一篇博客文章,其中包含该确切概念的示例。它有一个链接,指向该主题的整个系列中使用的所有代码。

关于c# - Task.Factory.StartNew,保持同一线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18660070/

相关文章:

c# - 带有 EventData 对象的 EventHubTrigger C#

c# - 如何在 .NET 中装饰(时间)任务?

c# - 新线程()和线程池?

c# - 永远不会触发 TaskScheduler.UnobservedTaskException 事件处理程序

c# - 在 C# 中使用 try-catch block 的正确方法是什么

c# - Google Analytics API BatchRequest - 过滤/回调

c# - 用于色偏去除的 SVM 图像标注的实现

c# - Task.Wait 在 OperationCanceledException 情况下的意外行为

c# - 如何将带有回调参数的方法包装到任务中?

c# - OAuth 简单服务提供者