C# 以不同的CPU优先级运行应用程序的部分

C# 以不同的CPU优先级运行应用程序的部分,c#,cpu-speed,C#,Cpu Speed,得到一个winform C#应用程序 它允许显示图像流(如视频) 我还将这些JPEG 1一次性上传到我的web服务器,用户可以查看这些JPEG(如视频) 为了使我的代码尽可能高效,我想知道我是否可以执行代码中负责以不同优先级上传这些图像的部分,比如实时 这可能吗 如果是的话 我是否必须将负责将这些图像上载到外部DLL的类对象移植到外部DLL? 那么,我将如何在不同的流程优先级下“启动”它 如果所有这些都是可能的,并且如果我接受我的PC上可能受到所有这些影响的其他进程的可能折衷,那么它实际上会给我

得到一个winform C#应用程序

它允许显示图像流(如视频)

我还将这些JPEG 1一次性上传到我的web服务器,用户可以查看这些JPEG(如视频)

为了使我的代码尽可能高效,我想知道我是否可以执行代码中负责以不同优先级上传这些图像的部分,比如实时

这可能吗

如果是的话

我是否必须将负责将这些图像上载到外部DLL的类对象移植到外部DLL? 那么,我将如何在不同的流程优先级下“启动”它

如果所有这些都是可能的,并且如果我接受我的PC上可能受到所有这些影响的其他进程的可能折衷,那么它实际上会给我带来更好的性能吗


感谢

尽管这种设计风格的好处值得怀疑,但实现这一点的一种方法是在应用程序中手动创建一个线程,以运行您希望优先排序的代码,然后使用属性设置线程优先级

另一个选项是在单独的进程中运行高优先级代码,并更改进程级别的优先级。这可能会提供比依赖线程优先级稍好的性能,但会增加更多的复杂性,因为现在您有了与应用程序其余部分进行进程间通信的开销


您可能想继续阅读这篇文章。

我不认为线程优先级可以帮助您解决问题,但如果您愿意,您可以在C#中更改线程优先级,并且您还有许多库,它们可以帮助您控制线程工作流,如

  • 第三方物流
  • 任务
  • 异步,等待
  • 幕后工作者
  • 螺纹等
任务并行库的TPL在多处理器上非常强大

在提升线程的优先级之前,请仔细考虑——这可能会导致其他线程资源不足等问题

using (Process p = Process.GetCurrentProcess())
  p.PriorityClass = ProcessPriorityClass.High;

enum ThreadPriority { Lowest, BelowNormal, Normal, AboveNormal, Highest }
我建议您对图像使用编码/解码这将帮助您将图像序列转换为视频。请查看此链接:

为了使我的代码尽可能的高效

很好,你提前考虑了性能。也就是说,根据数据结构和算法的使用方式选择合适的数据结构和算法

但是,您要避免的是过早的优化。线程/进程优先级肯定属于这一类

我想知道我是否可以执行我的代码中负责以不同优先级上传这些图像的部分,比如实时

这可能吗

是的,但你不应该

Windows操作系统已经有了所谓的。这意味着I/O绑定线程的优先级已经得到提升


最好让操作系统处理优先级。

嗨,谢谢你回来找我。我会试一试,然后再给你回复。嗨,谢谢你的链接。是的,这就是问题所在。如果我能在另一边对图像进行编码和解码,那将是最佳路线。这个链接衍生出了其他的链接,让我有很多东西要看。最有希望的是免费图像。该网站上声明有2个可用许可证。广告1是给我的,但看起来你不必为此付费,所以为什么要有2?re:资源匮乏。是的,这是我自己读到的。我只准备接受/考虑我的特定应用程序的好处是否显著。然后我可以让用户决定(选择btn)提升它。但是,在我看来,这是一个混乱的局面。只是在这里。你的回答给了我另一个视角,这是非常好的。虽然免费图像很好,但它并没有给我比我已经实现的更多的压缩。但编码器的概念必须是未来的发展方向。谢谢