我正在用Silverlight 4開發。Silverlight中沒有信號量?
線程在那裏。 WaitHandles(AutoResetEvent,ManualResetEvent)也存在。但沒有信號量?我錯過了什麼嗎?
我正在用Silverlight 4開發。Silverlight中沒有信號量?
線程在那裏。 WaitHandles(AutoResetEvent,ManualResetEvent)也存在。但沒有信號量?我錯過了什麼嗎?
我創建了我自己的Semaphore for Silverlight。
實際上,Silverlight中沒有信號量。 SL的線程庫受到限制。但是你可以非常輕鬆地製作你自己的。這裏有一個例子:
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--;
}
}
}
}
這個代碼是基於this post的第二個答案,這是優於第一的居然是線程安全的。
請注意,該鏈接上的「綠色」答案不是線程安全的。使用顯示鎖定的版本。 –