2012-12-05 33 views
0

這個問題是針對.NET Framework 4強制編譯錯誤,如果方法阻止在Dot Net 4中的調用

是否有人知道強制編譯器在給定實例方法發出任何調用時生成錯誤的方法阻止線程。我在一個代碼體中工作,並希望採用一種機械的方式來確保執行鏈中的任何內容都不會阻塞該線程。

我一直在試圖找到一個屬性,我可以添加到方法聲明,但一直沒能找到任何東西。

當我使用單詞塊時,我並不是指任何可能會掛起的代碼。具體來說,某些Microsoft API調用(如SMTP.Send()和NetworkStream.Read())會在達到特定事件之前停止執行。

+7

你是什麼意思,阻止線程的調用?所有調用在執行期間阻塞線程。 – Rotem

+0

您可以添加自己的線程管理器,並檢查正在監視的線程的'ThreadState'屬性。 – Candide

+0

即使你可以定義「阻塞線程」,這也需要編譯器知道你的意思,而編譯器不知道這些類型的東西。 – phoog

回答

1

使用FxCop的SDK來編寫自己的代碼分析規則,設置消息級錯誤,以便每當規則被違反,它會顯示爲「編譯錯誤」,看看這個博客以獲取更多信息Custom Code Analysis Rules

+0

這樣的事情是我希望已經以某種形式實現的。如果MSDN文檔提到的東西塊可能有一些機制。 這就是說我找不到任何東西。我覺得海關代碼分析規則能夠抓住我的問題的精神。 感謝您的信息。 –

1

Joshua對不起,但我不認爲你明白阻塞呼叫的概念......看到所有的呼叫都阻止,唯一的區別是有些阻塞比其他阻塞時間更長!我們通常說,當「長阻塞」部分發生在不同的線程中時,呼叫是「非阻塞呼叫」...

更直接的答案是:不,編譯器不知道呼叫會造成阻塞,所以他無法弄清楚!

相關問題