Thanks... (Somehow I always seem to miss the documents I need to see when I'm searching...)
> -----Original Message----- > From: dotnet discussion > [mailto:[EMAIL PROTECTED]]On Behalf Of > Ethan Smith > Sent: Monday, April 15, 2002 11:40 > To: [EMAIL PROTECTED] > Subject: Re: Threading and Enumeration > > > From the docs: > > "An enumerator remains valid as long as the collection remains > unchanged. If changes are made to the collection, such as adding, > modifying or deleting elements, the enumerator is irrecoverably > invalidated and the next call to MoveNext or Reset throws an > InvalidOperationException. If the collection is modified between > MoveNext and Current, Current will return the element that > it is set to, > even if the enumerator is already invalidated. > > The enumerator does not have exclusive access to the collection; > therefore, enumerating through a collection is intrinsically not a > thread-safe procedure. Even when a collection is synchronized, other > threads could still modify the collection, which causes the > enumerator > to throw an exception. To guarantee thread safety during > enumeration, > you can either lock the collection during the entire enumeration or > catch the exceptions resulting from changes made by other threads." > > > <Ms-help://MS.VSCC/MS.MSDNVS/cpref/html/frlrfsystemcollectio > nsienumerato > rclasstopic.htm> > > -----Original Message----- > From: dotnet discussion [mailto:[EMAIL PROTECTED]] > On Behalf Of > Tracy Martin > Sent: Monday, April 15, 2002 11:33 AM > To: [EMAIL PROTECTED] > Subject: [DOTNET] Threading and Enumeration > > Greetings, > > Does anyone have any information about how enumerators > handle changes > in the object during enumeration? Or, more specifically, I have a > scenario where I have a collection of objects that potentially being > added to by separate threads while being enumerated on > another thread. > Only one thread would be adding objects at a time (and > adding would be > synchronized to ensure that only one add operation is happening at a > time), but my question revolved around - would the > enumerating thread > find the newly added objects, or would it be necessary to > account for > this (by resetting the enumeration after an add, or some > other method > of notifying the enumerating thread that the underlying > collection has > changed)? > > Tracy > > You can read messages from the DOTNET archive, unsubscribe > from DOTNET, > or > subscribe to other DevelopMentor lists at http://discuss.develop.com. You can read messages from the DOTNET archive, unsubscribe from DOTNET, or subscribe to other DevelopMentor lists at http://discuss.develop.com. You can read messages from the DOTNET archive, unsubscribe from DOTNET, or subscribe to other DevelopMentor lists at http://discuss.develop.com.