0

この質問は、.NET Framework 4 に関するものです。

特定のインスタンス メソッドがスレッドをブロックする呼び出しを行ったときに、コンパイラに強制的にエラーを生成させる方法を知っている人はいますか。私はコードの本体で作業しており、実行チェーン内の何もスレッドをブロックしないようにするための機械的な方法が必要です。

メソッド宣言に追加できるプロパティを探していますが、何も見つかりませんでした。

ブロックという言葉を使用するとき、ハングする可能性のあるコードだけを意味するわけではありません。具体的には、SMTP.Send() や NetworkStream.Read() などの Microsoft API 呼び出しの一部は、特定のイベントに到達するまで実行を停止します。

4

2 に答える 2

1

Joshua 申し訳ありませんが、ブロッキング コールの概念を理解していないと思います...すべてのコールがブロックされていることを確認してください。唯一の違いは、一部のブロックが他のブロックよりも長く続くことです! 通常、「長いブロッキング」部分が別のスレッドで発生した場合、呼び出しは「非ブロッキング呼び出し」と呼ばれます...

より直接的な答えは次のとおりです。いいえ、コンパイラは呼び出しがブロッキングを引き起こすことを認識していないため、それを理解できません!

于 2012-12-05T15:10:17.760 に答える
1

FxCop SDK を使用して独自のコード分析ルールを記述し、メッセージ レベルをエラーに設定して、ルールに違反した場合は常に「コンパイル エラー」として表示されるようにします。詳細については、このブログを参照してくださいカスタム コード分析ルール

于 2012-12-05T15:12:12.173 に答える