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?)

ただし、 Mutexusing System.Threading;を使用できる名前空間はすでに追加しています 。私が行方不明だったのかもしれません。追加する必要のある他の参照があります。VS2010を使用しています。フレームワーク4.0

4

4 に答える 4

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 に答える
1

セマフォは.NET2.0で導入されました

System.Threading.dllは.NET4.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 に答える
0

このコードは私のためにコンパイルされます

using System.Threading;

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

    class Program
    {
        static void Main(string[] args) { }
    }
}
  • VS 2010
  • .NET 4.0
  • v4.0.0.0、ランタイムバージョンv4.0.30319への単一の参照、C:\ Program Files(x86)\ Reference Assemblies \ Microsoft \ Framework.NETFramework \ v4.0\System.dllにありますSystem.dll
于 2013-03-27T12:21:03.360 に答える