Silverlight 4で開発中です。Silverlightでセマフォーはありませんか?
スレッドがあります。 WaitHandles(AutoResetEvent、ManualResetEvent)もそこにあります。しかし、セマフォーはありませんか?何か不足していますか?
Silverlight 4で開発中です。Silverlightでセマフォーはありませんか?
スレッドがあります。 WaitHandles(AutoResetEvent、ManualResetEvent)もそこにあります。しかし、セマフォーはありませんか?何か不足していますか?
私自身がSemaphore for Silverlightを作成しました。
実際、Silverlightにはセマフォーはありません。 SLのスレッディングライブラリは制限されています。しかし、あなたは非常に簡単にあなた自身を作ることができます。このコードは、実際には、スレッドセーフであるために最初に好まれるthis postの第二の回答に基づいており、
public class Semaphore
{
private object Mutex { get; set; }
private int Count { get; set; }
private int Max { get; set; }
public Semaphore(int max = 1)
{
Mutex = new object();
Max = max;
}
public void WaitOne()
{
while (true)
{
lock (Mutex)
{
if (Count < Max)
{
Count++;
return;
}
}
Thread.Sleep(50);
}
}
public void Release()
{
lock (Mutex)
{
if (Count >= 0)
{
Count--;
}
}
}
}
:ここでは例です。
このリンクの「緑色の」回答はスレッドセーフではありません。ロックを示すバージョンを確認してください。 –