Pratik bir Queue kullanımı örneği

29-12-2005

Bir fonksiyonum BackgroundWorker' da verilen klasörde recursive olarak uzun işlemler yapıyor. Daha sonradan uygulamaya sürükle bırak (drag & drop) desteği ekleyince birden aynı anda birden fazla klasör eklenebilir oldu. Bu da bir hataya neden oldu, çünkü tarama işlemi bir öncekini iptal ediyor ve son gelen klasör için çalışıyordu sadece. Şu şekilde bir çözüme gittim,

Global bir Queue objesi oluşturdum,

Dim ScanQue As New Queue()

Tarama kısmında eğer tarama aktifse yeni gelen taramayı queue' ye ekledim

If ScanActive Then ScanQue.Enqueue(File) : Exit Sub

Tarama işlemi bitince çalışan fonksiyonada eğer queue boş değilse bir sonraki objeye geç dedim.

If ScanQue.Count > 0 Then StartScan(DirectCast(ScanQue.Dequeue, String))

Collection objemin FIFO veya LIFO olması benim için pek önemli değildi ama FIFO genelde daha mantıklı, dolayısıyla Queue iyi bir seçim oldu.


Recent Blog Posts

See all of the blog posts