我正在为wp7开发一个应用程序。我需要一个同步读取和写入。 所以我在队列创建此类c#线程同步
public class SynchronizedPacketQueue
{
[DataMember]
public List<Packet> packetsQ;
public SynchronizedPacketQueue()
{
packetsQ = new List<Packet>();
}
public int Count
{
get { return packetsQ.Count; }
private set{}
}
public Packet Dequeue()
{
lock (packetsQ)
{
if (packetsQ.Count == 0)
{
Monitor.Wait(packetsQ);
}
Packet packet = packetsQ[0];
packetsQ.RemoveAt(0);
return packet;
}
}
public void Enqueue(Packet packet)
{
lock (packetsQ)
{
packetsQ.Add(packet);
Monitor.Pulse(packetsQ);
}
}
}
现在我threadwrite入队的分组和threadread读取来自queue.Both是无限运行的线程。 但我不知道一些如何在packetQ.removeat(0)处阻塞threadwrite。
发生这种情况,因为你是在packetsQ应用锁。您应该对某个其他对象应用锁以将其删除。 – shalki