c# - 在 WPF/C# 中按需挂起/重启线程

标签 c# wpf multithreading restart suspend

在 WPF 应用程序中,我有一个线程池(每个线程都是对返回 base64 图像的 REST 网络服务的调用),我想非常精确地“控制”它。

这些线程是异步的,我希望能够暂停/恢复它们中的每一个。

  • 我想使用 CancellationToken 之类的东西不是一个选项,因为每个线程都只是在执行调用并等待答案。

  • 我刚刚看到 Thread => Suspend 和 Restart 类中的内容已过时/弃用。

那么如果有人有什么建议呢?

提前致谢。

最佳答案

因此,由于线程的性质,您正在寻找的线程控制类型并不完全可行。线程执行由操作系统及其调度程序排队。这意味着您无法控制线程何时主动运行。然而,纤程类似于线程,区别在于应用程序负责调度和切换线程。纤程被理想化为单声道中的协程,并且 win32 库对它们有一些支持。不过,.net 框架并未为其提供太多支持。

社区中的一些人一直在询问有关纤维的问题,但他们的搜索大多没有结果。 SO post

This答案可能会将您引向对您的旅程有帮助的方向。它提到为并行任务库创建您自己的调度程序。

我没有深入探索这个概念,因为我还不需要它,但 yield 返回计划设计似乎是一种替代方案。

关于c# - 在 WPF/C# 中按需挂起/重启线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37076822/

相关文章:

multithreading - 如何唤醒Mac中休眠的线程

c# - 使用 Entity Framework 等待数据更改时,是否有比 Thread.Sleep 更好的替代方法?

c# - 如何正确加入多个异步方法的结果?

wpf - DrawingVisual vs Canvas.OnRender 对许多不断变化的形状的性能

c# - 为什么我的XAML抛出一个Storyboard对象引用错误?

WPF Textblock缩放和环绕

java - Android 线程和消息传递

c# - 在变量中存储 Lambda 表达式

快速计算大字符串之间距离的 C# 代码或算法?

c# - 开始学习 ASP.NET 的好地方