2012-06-21 3 views
1

Silverlight 3.0에서 응용 프로그램을 만들고 있습니다. 해당 응용 프로그램에서 다음과 같은 기능을 구현하고 싶습니다. 값 컬렉션을 유지해야합니다. 한 끝에서 해당 컬렉션의 값을 지속적으로 추가하고 다른 end.Means 값을 제거하는 3000 값 컬렉션을 유지한다고 가정합니다. 해당 컬렉션에서 하나의 값을 추가하는 경우 한 값을 3000 값의 컬렉션을 가질 수 있도록 제거해야합니다. "순환 큐"를 사용하려면 원형 큐의 실버 라이트에 어떤 기능이 있습니까? 아니면 원형 큐 대신 효율적인 논리가 있습니까? 도와주세요. 미리 감사드립니다.Silverlight의 순환 대기열 기능

답변

1

당신이 사용하는 내장 클래스 Queue하고 주위에 래퍼을 구현 할 수 있습니다 : 응답에 대한

public class CircularQueue 
{ 
    private int totalItems; 
    private Queue<object> queue = new Queue<object>(); 

    public CircularQueue(int maxCount) 
    { 
    this.totalItems = maxCount; 
    } 

    /// <summary> 
    /// Get first object from queue. 
    /// </summary> 
    public object Dequeue() 
    { 
    // ToDo: You might want to check first if the queue is empty to avoid a InvalidOperationException 
    object firstObject = this.queue.Dequeue(); 
    return firstObject; 
    } 

    public void EnQueue(object objectToPutIntoQueue) 
    { 
    if (this.queue.Count >= this.totalItems) 
    { 
     object unusedObject = this.queue.Dequeue(); 

     // ToDo: Cleanup the instance of ununsedObject. 
    } 

    this.queue.Enqueue(objectToPutIntoQueue); 
    } 
} 
+0

감사합니다 ...! – Dany

1

내가 어떤 특정 용어 '순환 큐'에 익숙하지 않은,하지만 당신은 쉽게 자신을 만들 수 있습니다

public class CircularQuene<T> : List<T> 
{ 
    public CircularQuene(int maxCount) 
    { 
     count = maxCount; 
    } 

    new public void Add(T variable) 
    { 
     base.Add(variable); 
     if (Count > count) 
     { 
      RemoveAt(0); 
     } 
    } 

    private int count; 
    public int MaxCount 
    { 
     get 
     { 
      return count; 
     } 
     set 
     { 
      count = value; 
     } 
    } 
} 

약간 거친, 그러나 당신의 요구에 맞게해야한다.

+0

감사의 답장을 – Dany