3

嗨,我正在尝试Semaphore在我的应用程序中使用。我是这样声明的。

class MyThread
{
    public Thread Thrd;

    static Semaphore sem = new Semaphore(2, 2);
    public MyThread(string name)
    {
        Thrd = new Thread(this.Run);
        Thrd.Name = name;
        Thrd.Start();
    }
}

但我无法编译它给了我这个错误:

The type or namespace name 'Semaphore' could not be found 
(are you missing a using directive or an assembly reference?)

但是我已经添加了 using System.Threading;可以使用Mutex的命名空间。可能是我所缺少的。有没有其他参考需要补充。?我正在使用VS 2010。框架 4.0

4

4 回答 4

1

信号量是在 .NET 2.0 中引入的

System.Threading.dll 是在 .NET 4.0 中添加的(尽管命名空间 System.Threading 从 v1 开始就已经存在)。也许您的项目包含旧版本的 System.Threading。

这是一个常见问题类型或命名空间''在类或命名空间''中不存在(您是否缺少程序集引用?)

您需要在项目中添加对定义了该命名空间的程序集的引用,或者尽管您声明您正在使用 System.Threading,但您仍然缺少 using 语句。

于 2013-03-27T12:08:11.453 回答
1

最好添加 4.0 版本以获得 Semaphore 类的适当参考。

于 2013-03-27T12:19:10.900 回答
1
 .NET Framework
 Supported in: 4.5, 4, 3.5, 3.0, 2.0
.NET Framework Client Profile
 Supported in: 4, 3.5 SP1
 Portable Class Library
 Supported in: Portable Class Library
 .NET for Windows Store apps
 Supported in: Windows 8

你可能需要另一个版本的框架

于 2013-03-27T12:07:18.783 回答
0

这段代码为我编译

using System.Threading;

namespace ConsoleApp1
{
    class MyThread
    {
        static Semaphore sem = new Semaphore(2, 2);
    }

    class Program
    {
        static void Main(string[] args) { }
    }
}
  • 对比 2010
  • .NET 4.0
  • 单一引用System.dll v4.0.0.0,运行时版本 v4.0.30319,位于 C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.0\System.dll
于 2013-03-27T12:21:03.360 回答