2012-03-17 7 views
3

のスレッドの優先度を変更し、は私がアクションを持って行動

var act = new Action(() => 
{ 
    while (true) 
    { 
    //Some Codes! 
    } 
}); 
act.BeginInvoke(null, null); 

は、どのように私はこのアクションを実行するスレッドの優先順位を上げることができますか? 私は単純なスレッドでそれをどうやって行うことができるのか分かります。

Thread.CurrentThread.Priority = ThreadPriority.Lowest; 

しかし、アクションの優先順位についてはどうですか?

+0

あなたがしたいことは不明です。それとは別に、スレッドの優先順位を手動で変更しないでください。パフォーマンスに問題がある場合は、スレッドの優先順位で遊ぶのではなく、コードを改善できるかどうかを確認してください。動作は未定義で、変化する可能性があります。 – Polity

+0

スレッドは何もしません。 –

+0

私のプログラムは2つのスレッドを持っているので、私はより明確にするために私の質問を書き直します。 – mefmef

答えて

4

BeginInvokeはあなたのタスクをThreadPoolにキューイングします。標準の.NET ThreadPoolのディスパッチを制御する権限はありません。コードが実際に実行されると、スレッドを制御することしかできません。

警告: ThreadPoolスレッドの優先順位を変更することは危険です。さらに読む:.NET: Why not change the priority of a ThreadPool (or Task) thread?

あなたが達成しようとしていることを説明できる場合は、おそらくよりよい解決策を得ることができますか?

+0

ヒューマノイドロボットの魔法使いのためにいくつかのコードを書こうとすると、モーションコントロールのための2つのアクションとビジョンプロセスのための1つのアクションがあります。私はモーションスレッドの優先順位を変更すると、問題を解決するかもしれないと思う! – mefmef

+1

ThreadPoolは、リソースが利用可能なときに、バックグラウンドで実行するコードを対象としています。実行の保証が必要なものについては、それらを実行するための専用スレッドをスピンアップする必要があります。 –

関連する問題