Infralution Support Forum Index Infralution Support
Support groups for Infralution products
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

EnableRowCaching doesn't work.

 
Post new topic   Reply to topic    Infralution Support Forum Index -> Virtual Tree Support
View previous topic :: View next topic  
Author Message
JohnSummit



Joined: 10 Apr 2008
Posts: 32

PostPosted: Mon Jul 13, 2009 5:58 am    Post subject: EnableRowCaching doesn't work. Reply with quote

I'm seeing that previously created objects are being recreated although EnableRowCaching is set to true. I dynamically create objects as the tree needs them. Debug.WriteLine of the top-level node indices show the following:

Creating top-level node 0
Creating top-level node 1
Creating top-level node 2
Creating top-level node 3
Creating top-level node 4
Creating top-level node 5
Creating top-level node 6
Creating top-level node 7
Creating top-level node 8
Creating top-level node 9
Creating top-level node 10
Creating top-level node 11
Creating top-level node 12
Creating top-level node 13
Creating top-level node 14
Creating top-level node 15
Creating top-level node 16
Creating top-level node 17
Creating top-level node 14
Creating top-level node 15
Creating top-level node 16
Creating top-level node 17
Creating top-level node 14
Creating top-level node 15
Creating top-level node 16
Creating top-level node 17
Creating top-level node 18
Creating top-level node 19
Creating top-level node 20
Creating top-level node 21
Creating top-level node 22
Creating top-level node 23
Creating top-level node 24
Creating top-level node 25
Creating top-level node 26
Creating top-level node 27
Creating top-level node 28
Creating top-level node 29
Creating top-level node 30
Creating top-level node 31
Creating top-level node 32
Creating top-level node 33
Creating top-level node 34
Creating top-level node 35
Creating top-level node 36
Creating top-level node 37
Creating top-level node 38
Creating top-level node 39
Creating top-level node 40
Creating top-level node 41
Creating top-level node 42
Creating top-level node 43
Creating top-level node 44
Creating top-level node 45
Creating top-level node 46
Creating top-level node 47
Creating top-level node 48
Creating top-level node 49
Creating top-level node 50
Creating top-level node 51
Creating top-level node 52
Creating top-level node 53
Creating top-level node 54
Creating top-level node 55
Creating top-level node 56
Creating top-level node 57
Creating top-level node 58
Creating top-level node 59
Creating top-level node 60
Creating top-level node 61
Creating top-level node 62
Creating top-level node 63
Creating top-level node 64
Creating top-level node 65
Creating top-level node 66
Creating top-level node 67
Creating top-level node 68
Creating top-level node 69
Creating top-level node 70
Creating top-level node 71
Creating top-level node 72
Creating top-level node 73
Creating top-level node 74
Creating top-level node 75
Creating top-level node 76
Creating top-level node 77
Creating top-level node 78
Creating top-level node 79
Creating top-level node 80
Creating top-level node 81
Creating top-level node 82
Creating top-level node 83
Creating top-level node 84
Creating top-level node 85
Creating top-level node 86
Creating top-level node 87
Creating top-level node 88
Creating top-level node 89
Creating top-level node 90
Creating top-level node 91
Creating top-level node 92
Creating top-level node 93
Creating top-level node 94
Creating top-level node 95
Creating top-level node 96
Creating top-level node 97
Creating top-level node 98
Creating top-level node 99
Creating top-level node 100
Creating top-level node 101
Creating top-level node 102
Creating top-level node 103
Creating top-level node 104
Creating top-level node 105
Creating top-level node 106
Creating top-level node 107
Creating top-level node 108
Creating top-level node 109
Creating top-level node 110
Creating top-level node 44
Creating top-level node 45
Creating top-level node 46
Creating top-level node 47
Creating top-level node 27
Creating top-level node 28
Creating top-level node 29
Creating top-level node 24
Creating top-level node 25
Creating top-level node 26
Creating top-level node 21
Creating top-level node 22
Creating top-level node 23
Creating top-level node 18
Creating top-level node 19
Creating top-level node 20
Creating top-level node 15
Creating top-level node 16
Creating top-level node 17
Creating top-level node 12
Creating top-level node 13
Creating top-level node 14
Creating top-level node 9
Creating top-level node 10
Creating top-level node 11
Creating top-level node 6
Creating top-level node 7
Creating top-level node 8
Creating top-level node 3
Creating top-level node 4
Creating top-level node 5
Creating top-level node 0
Creating top-level node 1
Creating top-level node 2

What could be the cause of this? I could cache the created objects myself in an hashtable but it seems the tree control should do this itself.
Back to top
View user's profile Send private message
Infralution



Joined: 28 Feb 2005
Posts: 5027

PostPosted: Tue Jul 14, 2009 12:05 am    Post subject: Reply with quote

Virtual Tree caches Rows not the underlying data objects directly. It does this to improve performance when scrolling. However Row objects are transitory - this means that they can (and will) be recreated when the underlying data changes and UpdateRows is called (either directly or indirectly through a ListChanged notification event). If you turn EnableRowCaching off it just means that VirtualTree is more aggressive in disposing of Rows that aren't currently used.

This means that you may need to implement a caching mechanism for your objects external to Virtual Tree. This is generally a good idea in any case because it means that the rest of your application can also use the same mechanism (without becoming reliant on user interface code). The caching mechanism can be used to ensure that you only have a single instance of each object in the application data space thus avoiding the potential problems of data aliasing (where you have two or more objects in memory representing the same underlying data).
_________________
Infralution Support


Last edited by Infralution on Mon Aug 31, 2009 1:51 am; edited 1 time in total
Back to top
View user's profile Send private message Visit poster's website
JohnSummit



Joined: 10 Apr 2008
Posts: 32

PostPosted: Tue Jul 14, 2009 2:15 am    Post subject: Reply with quote

Ok, thanks for the explanation. I did roll my own cache and it is working well.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Infralution Support Forum Index -> Virtual Tree Support All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group