Aslında iki sorum var ama onlar tür onlar biri olarak gitmek işte ilişkilidir ... şu anda TreeViewer
kullanılarak görüntülenmeyen ağaç düğümleri çöp toplama sağlamak için nasılTembel ve Ertelenmiş TreeViewer soruları
(SWT.VIRTUAL
) ve ILazeTreeContentProvider
? Düğüm bir 5000 çocuğa sahipse, görüntüleyen kişi tarafından görüntülendiğinde, hiçbir zaman izin vermezler, dolayısıyla Bellek Yetersiz Hata, ağacınızda çok sayıda düğüm varsa ve yapraklar büyükse ve yığın boyutu yeterince büyük değilse. Bellek sızıntılarından kaçınmak için, bir ağaç görüntüleyiciyi büyük miktarda veri (yüz binlerce nesne veya hatta milyonlarca) ile hiçbir zaman kapalı görüşten kaynaklanan bir tür en iyi uygulama var mı? Belki de belki görüntüleyici/içerik sağlayıcı unsurları ile daha fazla esneklik sağlayan bazı geri çağırma arayüzü var mı?
tek TreeViewer
(SWT.VIRTUAL
) için (DeferredTreeContentManager
) VE tembel (ILazyTreeContentProvider
) yükleme deffered birleştirme mümkün mü? Örneklere ve API'lara bakarak anladığım kadarıyla, her ikisini de yalnızca bir zamanda değil, her ikisinde de kullanılabilir. , YALNIZCA verilen bir düğüm için görünür olan çocukları getirir VE bunları, İş API'sini kullanarak ayrı bir iş parçacığıyla getir. Beni rahatsız eden, ertelenmiş yaklaşımın TÜM çocuklara yüklediğidir. Farklı bir iş parçacığına rağmen, yine de en az bir altkümenin aynı anda görüntülenmesine rağmen, tüm öğeleri yükler. Gerekirse
Ben bu arada bir şey ile gelip yönetmek Eğer ben memnuniyetle burada paylaşırım yüzden şu anda olanlarla kendim mücadele ediyorum
... sorularımın kod örneklerini sağlayabilir.
Teşekkürler!
Selamlar, Svilen
, görüntüleyenler sağlayıcıya, belirli bir öğenin görüntüleneceğini bildirir (kaydırma veya genişletme nedeniyle). Mevcut ertelenmiş uygulamalar, içerik sağlayıcı yöntemlerinde bir iş kullanılarak kolayca elde edilebilir. her iki yöntemde de sorun, neden özel olabilirler: tembel yükleme, önceden öğe sayısını bildiğinizi varsayar ve içerik görüntülendiğinde görüntüleyicinin içeriğini değiştirir. İçeriği (örneğin, bir remore kaynağından) yüklemek istemediğinizde, kullanıcı bir şeyi her kaydırdığında veya genişletdiğinde. – benez