2012-12-05 46 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对不起,但我不认为你明白阻塞呼叫的概念......看到所有的呼叫都阻止,唯一的区别是有些阻塞比其他阻塞时间更长!我们通常说,当“长阻塞”部分发生在不同的线程中时,呼叫是“非阻塞呼叫”...

更直接的答案是:不,编译器不知道呼叫会造成阻塞,所以他无法弄清楚!

相关问题