wp7 용 앱을 개발 중입니다. 동기화 된 읽기 및 쓰기가 필요했습니다. 그래서 나는 큐 지금 내 threadwrite의 대기열에 패킷을이 클래스 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);
}
}
}
를 생성하고 queue.Both 무한 실행중인 스레드가에서 threadread는 읽습니다. 하지만 threadwrite가 packetQ.removeat (0)에서 어떻게 차단되는지 알지 못합니다.
당신이 packetsQ에 잠금을 적용하고 있기 때문에 이런 일이 사용한다고 생각합니다. 다른 객체에 잠금을 적용하여 제거해야합니다. – shalki