4

winform C# アプリケーションを取得しました。

これにより、画像のストリームを (ビデオのように) 表示できます。

また、これらの jpeg を 1 つずつ Web サーバーにアップロードすると、ユーザーはこれらの jpeg を (ビデオのように) 見ることができます。

コードを可能な限り効率的にするために、これらの画像を別の優先順位でアップロードするコードの一部を実行できるかどうか疑問に思っていました-たとえば、リアルタイムのように?

これは可能ですか?

もしそうなら..

これらの画像のアップロードを担当するクラス オブジェクトを外部 DLL に移植する必要がありますか? 次に、別のプロセス優先度でどのように「起動」しますか?

これらすべてが可能であり、これらすべての影響を受ける可能性のある PC 上の他のプロセスのトレードオフを受け入れると、実際にパフォーマンスが向上しますか?

ありがとう

4

3 に答える 3

2

私のコードを可能な限り効率的にするために

パフォーマンスについて事前に考えているのは良いことです。つまり、使用方法に基づいて適切なデータ構造とアルゴリズムを選択します。

ただし、避けたいのは時期尚早の最適化です。そして、スレッド/プロセスの優先順位は間違いなくそのカテゴリに分類されます。

これらの画像を別の優先順位でアップロードするコードの一部を実行できるかどうか疑問に思っていました-たとえば、リアルタイムですか?

...

これは可能ですか?

はい、しかしそうすべきではありません。

Windows OS には、動的優先順位ブーストと呼ばれるものが既にあります。これは、I/O バウンド スレッドの優先順位がすでに高くなっていることを意味します。

OSに優先順位を処理させるのが最善です。

于 2013-11-22T16:01:40.363 に答える
1

このスタイルの設計の利点は疑わしいですが、それを実現する 1 つの方法は、優先順位を付けたいコードを実行するスレッドをアプリケーションで手動で作成し、Thread.Priorityプロパティを使用してスレッドの優先順位を設定することです。

別のオプションは、優先度の高いコードを別のプロセスで実行し、プロセス レベルの優先度を変更することです。これにより、スレッドの優先度に依存するよりもわずかにパフォーマンスが向上する可能性がありますが、アプリケーションの残りの部分とプロセス間通信を行うオーバーヘッドがあるため、さらに複雑になります。

Windows タスク スケジューラの優先度システムに関する MSDN のこの記事を読むことをお勧めします。

于 2013-11-22T15:42:12.537 に答える
1

スレッドの優先度が問題の解決に役立つとは思いませんが、必要な場合は、C# でスレッドの優先度を変更できます。また、スレッドのワークフローを制御するのに役立つ多くのライブラリもあります。

  • TPL、プリンク
  • タスク
  • 非同期、待機
  • バックグラウンドワーカー
  • スレッドなど C#.

タスク並列ライブラリの TPL は、マルチ プロセッサで非常に強力です。

スレッドの優先度を上げる前に慎重に検討してください — 他のスレッドのリソース枯渇などの問題につながる可能性があります。

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

enum ThreadPriority { Lowest, BelowNormal, Normal, AboveNormal, Highest }

画像のエンコード/デコードを使用することをお勧めします。これは、一連の画像をビデオに変換するのに役立ちます。このリンクを見てください:

C# で一連の画像をレンダリングしてビデオを作成する

于 2013-11-22T15:49:54.730 に答える