Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在WPF/C中按需挂起/重新启动线程#_C#_Wpf_Multithreading_Restart_Suspend - Fatal编程技术网

C# 在WPF/C中按需挂起/重新启动线程#

C# 在WPF/C中按需挂起/重新启动线程#,c#,wpf,multithreading,restart,suspend,C#,Wpf,Multithreading,Restart,Suspend,在WPF应用程序中,我有一个线程池(每个线程都是对返回base64映像的REST Web服务的调用),我想更精确地“控制”它 这些线程是异步的,我希望能够挂起/恢复它们中的每一个 我想使用CancellationToken之类的东西不是一个选项,因为每个线程都只是在做一个调用并等待答案 我刚刚在类中看到Thread=>Suspend&Restart已经过时/不推荐了 如果有人有什么建议 提前感谢。因此,由于线程的性质,您正在寻找的线程控制类型并不完全可行。线程执行由操作系统及其调度程序排队。

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

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

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

  • 我刚刚在类中看到Thread=>Suspend&Restart已经过时/不推荐了

如果有人有什么建议


提前感谢。

因此,由于线程的性质,您正在寻找的线程控制类型并不完全可行。线程执行由操作系统及其调度程序排队。这意味着您无法控制线程何时将积极运行。但是,光纤与线程类似,不同之处在于应用程序负责调度和切换线程。光纤在mono中被理想化为协同例程,win32库对其提供了一些支持。但是.net框架并没有提供太多的支持

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

这个答案可能会引导你们走向一个对你们的旅程有帮助的方向。它提到为并行任务库创建自己的调度器


我并没有深入探讨这个概念,因为我还没有对它的需求,但收益回报程序设计似乎是一个替代方案。

线程只是在做一个调用并等待答案。
这难道不意味着它在等待时不使用处理时间吗?那么为什么要挂起它呢?实际上,我运行了负责异步获取图像的前几个线程(取决于10、20个线程)。这些要求并不紧迫。有时我会执行另一项非常紧急的任务:不幸的是,这项任务很慢。我不能说这件事不紧急,另一件事紧急。我无法管理任务之间的调度。。。这就是我对暂停/重新启动非紧急任务感兴趣的原因。。。