C# 在VS2010解决方案中查找阻塞调用

C# 在VS2010解决方案中查找阻塞调用,c#,asynchronous,blocking,C#,Asynchronous,Blocking,我的任务是从C#应用程序中删除阻塞呼叫。事实证明,这是它将运行的环境的一个要求。我理解阻塞调用的概念,但是,我不确定从哪里开始查找现有的阻塞调用 所以有几个问题: 对于任何给定的函数,我如何判断它是否阻塞?除了查阅文件,还有什么办法吗 有没有办法在项目或解决方案中搜索阻塞?一些插件可以告诉我吗 据我所知,没有自动的方法可以找到阻塞呼叫。大多数阻塞代码用于线程或进程同步,如锁、监视器.Enter、互斥和信号量/信号量LIM WAIT、CountdownEvent和Barrier类的使用。还有Spi

我的任务是从C#应用程序中删除阻塞呼叫。事实证明,这是它将运行的环境的一个要求。我理解阻塞调用的概念,但是,我不确定从哪里开始查找现有的阻塞调用

所以有几个问题:

  • 对于任何给定的函数,我如何判断它是否阻塞?除了查阅文件,还有什么办法吗
  • 有没有办法在项目或解决方案中搜索阻塞?一些插件可以告诉我吗

  • 据我所知,没有自动的方法可以找到阻塞呼叫。大多数阻塞代码用于线程或进程同步,如锁、监视器.Enter、互斥和信号量/信号量LIM WAIT、CountdownEvent和Barrier类的使用。还有SpinLock和ReaderWriterLock/ReaderWriterLockSlim锁,用于阻止

    有几个线程调用被阻塞。从技术上讲,Sleep可以被视为阻塞调用,尽管它持续的时间有限。Join等待其他线程完成,因此被阻塞

    For和While循环可以被认为是阻塞的,因为它们将一直运行到完成为止,但如果它们正在等待另一个线程中更新的特定变量,则通常会使用上述调用之一(尤其是lock)


    请记住,删除其中任何一个都可能会对线程安全产生严重的负面影响。

    据我所知,没有自动找到阻塞调用的方法。大多数阻塞代码用于线程或进程同步,如锁、监视器.Enter、互斥和信号量/信号量LIM WAIT、CountdownEvent和Barrier类的使用。还有SpinLock和ReaderWriterLock/ReaderWriterLockSlim锁,用于阻止

    有几个线程调用被阻塞。从技术上讲,Sleep可以被视为阻塞调用,尽管它持续的时间有限。Join等待其他线程完成,因此被阻塞

    For和While循环可以被认为是阻塞的,因为它们将一直运行到完成为止,但如果它们正在等待另一个线程中更新的特定变量,则通常会使用上述调用之一(尤其是lock)


    请记住,删除其中任何一个都可能会对线程安全产生严重的负面影响。

    我假设“阻塞”是指从UI线程调用的函数,它需要花费的时间超过一小部分?例如,可以将文件IO请求视为阻塞。或者你的意思是严格阻止呼叫,比如等待信号量或互斥吗?@AresAvatar,好问题,需求文档根本没有区分。考虑到上下文,我假设不包括文件IO。我假设“阻塞”指的是从UI线程调用的一个函数,它花费的时间比一小段时间还要多?例如,可以将文件IO请求视为阻塞。或者你的意思是严格阻止呼叫,比如等待信号量或互斥吗?@AresAvatar,好问题,需求文档根本没有区分。考虑到上下文,我假设不包括文件IO。