我喜欢一个线程被许多任务重用,但我可以强制一个任务只在同一个线程中运行吗?
跟进 总是很高兴回到 SO 看到 5 次降级。实际上,我认为这个问题具有相关性。今天我正在使用线程,这工作正常,但线程大部分时间都在休眠。任务将解决这个问题。但是线程正在使用只能从同一个线程创建和访问的资源。现在你知道我为什么问了。
我喜欢一个线程被许多任务重用,但我可以强制一个任务只在同一个线程中运行吗?
跟进 总是很高兴回到 SO 看到 5 次降级。实际上,我认为这个问题具有相关性。今天我正在使用线程,这工作正常,但线程大部分时间都在休眠。任务将解决这个问题。但是线程正在使用只能从同一个线程创建和访问的资源。现在你知道我为什么问了。
是的,你可以,你可以通过使用 aTaskScheduler
或通过使用 a来做到这一点SynchronizationContext
。要么是一种允许您在同一线程下运行任意数量的任务的方法,甚至可能是创建任务的线程。
如果您在已经存在的 UI 上下文中创建任务,SynchronizationContext
那么您可以将其传入。如果没有,您将需要创建自己的上下文来传递给任务并确定任务是如何传递的它应该被执行。你可以创建一个新的同步上下文,给它一些任务,然后让它在当前线程中执行它们,如果你愿意的话。 这是一篇博客文章,其中包含该确切概念的示例。它具有与该主题的整个系列中使用的所有代码的链接。
我很确定这是不可能使用任务的,因为任务不(据我了解)保证使用单独的线程来执行任务。您当然可以使用线程本身并编写代码以使用相同的线程来执行此操作。请记住,一旦线程停止,它就无法重新启动。