24

TPLはタスクを調整するためにタスクスケジューラを使用します。による公式文書デフォルトのタスクスケジューラはスレッドプールを使用しますが、TaskCreationOptions.LongRunningオプションが提示されると、そのタスク専用のスレッドが作成されます(A)。

質問:現時点では、Visual Studio 2010用のMSDNドキュメントは準備ができておらず、現在のオンラインMSDNは未完成です。 (A)が真か偽か誰かが知っていますか?


2 답변


36

はい、LongRunningプール外に新しいスレッドを強制的に作成します。最新のフレームワークバージョンからの擬似逆アセンブルコードは次のとおりです。

...
if (task.Options HasFlag LongRunning) then
    create new Thread thread
    thread.Start(task)
...

編集:醜いC#から擬似コードへ変換。


  • リフレクティングは、Fx自体にとって認められている慣習の一種です。しかし危険なのは、これは将来のバージョンで変わる可能性があるということです。 - Henk Holterman
  • @千葉:私はマウに問題があったとは思わない。逆アセンブリを確認すると役に立ちます。ヘンクも+1。スケジューラロジックが変更される可能性があるため、これが独自のスレッドにあることは保証されません。 - Scott P
  • @スコットこのコードが逆アセンブルされたライブラリの所有者は、理論的には、テイクダウン通知それをホストしているウェブサイトへ - それは著作権侵害です。そのため、一般的にはよくありません。ここでは良い行動とSOを考えています。 - Tim Lloyd
  • @Chibacityさて、問題はどのようにして実装されるのかということでした。最後のドキュメンテーションページには、ここで述べられていること以外に何も述べてはいけません。加えて、誰もそのようなif条件を書かないので、それは実際のソースコードではないことがわかります。とにかく、答えを擬似コードに変更します。 - Mau
  • @ chibacity:"公正使用"などの概念もあります。元のバージョンでも完全に合法であったかもしれません。しかし、私たちは誰も[米国]著作権法の専門家ではないと思います。 - Henk Holterman

14

おそらくあなたは "Thread.IsThreadPoolThread"を使ってこれをチェックできる:

http://msdn.microsoft.com/en-us/library/system.threading.thread.isthreadpoolthread.aspx


  • 試してみただけで、LongRunningオプションを指定した場合、このプロパティはfalseになります。 - Henk Holterman
  • @Henk Excellent - 「LongRunning」を使用する場合は「Thread.IsThreadPoolThread = false」を使用してください。乾杯。 - Tim Lloyd

リンクされた質問


最近の質問