"Collection Was Modified; Enumeration Operation May Not Execute" Error On Deployment
Sep 20, 2010
I'm getting this error when I deploy a VB.NET application and for the life of me I cannot figure out why.I do not get this error when I run the app from the IDE and the test machine I am deploying it to has a similar configuration to the dev machine...Windows 7 & .NET 3.51 SP1 and 4.0.The app bombs out when the main form is loaded after logging in. I've narrowed it down to the main form because if I load another form from login and then open the main form, this happens.
I have this flood-fill algorithm, based on a queue (I tried the recursive method but pictures are too big and it was causing stack overflow).The problem is that when it makes the second pass in the for-each loop, the program crashes and compiler gives me the message "Collection was modified; enumeration operation may not execute.".Well, of course I know the collection was modified (it supposed to be!) since I am adding necessary items to it on-the-fly within the loop. What I cannot understand is why it happens since the for-each is based on the remaining items in the collection and not in a numeric index.
Below, the actual code:
Code: Public Sub FloodFill(ByVal myx As Integer, ByVal myy As Integer) Dim icoord As coordinate Dim ocoord As coordinate
This is what happened: on the form load of my application i created a background worker to bind collection (records from database filled in the dataset) on my control. but the problem is when the i updated the records on the database it throws an error if i run this procedure again.
If xControl.InvokeRequired Then Dim MyDelegate As New InitializeDataBinding_Delegate(AddressOf InitializeDataBinding) Invoke(MyDelegate, New Object() {xControl, xQuery, xPrimaryKey}) ' ERROR HERE SAYING: Collection was modified; enumeration operation may not execute.
I'm getting a Collection was modified; enumeration operation may not execute error every time I try to close this form. I suspect it has something to do with the StringBuilder() which I have declared in the starting form (Details1). I have already spent hours looking for the problem. It does not throw an error when I debug, only when I install on other machines.
I am encountering an error when looping through datarows. I searched SO and tried the solutions, but no luck. Collection was modified; enumeration operation might not execute.
Dim dRow As DataRow For Each dRow In dt.Rows dt.Rows.Add(dRow("CustNum"), dRow("SalesRepName"), dRow("mgrid"), "=""" & dRow("midValue") & """", dRow("dba"), dRow("sysDate"), dRow("statusID")) Next
The error occurs the first time the code hits "Next". What would be causing Collection was modified; enumeration operation might not execute.How can I resolve this error?
I'd like some help with this error that other users has when they launch the app I created. I will copy / paste the error
Tittle: Collection was modified; enumeration operation may not execute. Error: System.InvalidOperationException: Collection was modified; enumeration operation may not execute. at System.Windows.Forms.Control.MarshaledInvoke(Control caller, Delegate method, Object[] args, Boolean synchronous) at System.Windows.Forms.Control.Invoke(Delegate method, Object[] args)
We have some third party code that is causing some misery at the moment due to throwing the above error: it is slightly odd because it is an intermittent error. Here is the method that is causing the issue: Private Shared Sub IntLocateDictionaries(ByVal haystack As ExpDictionary, ByVal needlearray() As Object, _ ByVal resultarray() As Object, ByVal removemarks As Boolean) Dim i As Integer Dim item As Object [Code] .....
I understand that this error is usually caused by trying to modify a collection whilst enumerating around it, hence why I've added logging on the only line that looks like might alter the collection... Since adding the logging we have still experienced the issue but NO LOGGING appears: this isn't surprising since if you look at the parameters on the calling line (the only place this Sub is called from) - removemarks is passed as False - this will be passed all the way down through the recursive calls and so that line which calls .Remove never gets executed....the fact we don't see logging proves this....
I am working on a project where I have a personnel class. The records stored in the class are populated a few records per second. At the time I am inserting the records, I have to check the same class to ensure the same record is not added twice. Since I am looping through the class using "For Each", I get a message "Collection was modified; enumeration operation may not execute".
i'm getting the following error: "COLLECTION WAS MODIFIED; ENUMERATION OPERATION MAY NOT EXECUTE."
The stack trace is ;
at System.Collections.SortedList.SortedListEnumerator.MoveNext() at SatcomDiscoverySocket.clsGatewaySend.SendViaGatewaySend() in C:Documents and Settingsjim.SATCOM_DOMAINMy DocumentsVisual Studio 2005ProjectsSatcom Discovery Socket ServerSatcomDiscoverySocketSatcomDiscoverySocketThread PollingclsGatewaySend.vb:line 60
The line in question is but I don't believe that to be true I think its the line above it;GatewaySendEntry = Nothing The code is below. I can't figure out why, it's causing the error at that line and how to fix it.
I have a form with a listview, and it operates as I expect it to, but when I close the form the debugger stops on the me.close() method and pulls up the collection was modified;enumeration operation may not execute error. this occurs even when I do nothing in the program and just try to run and close it.
When I close some of the forms I have opened in my project, i get an error that says "Collection was modified, Enumeration operation may not execute"I used a Try/Catch error handler on one of the forms and it stopped the error from popping up, but I want to know what I can do so that this does not keep happening.
I have a logout menu option in my MDI application. On log out I want to close all open forms. currently i am using following code snippet to achieve this;
For Each f As Form In My.Application.OpenForms If f.Name = Me.Name Then For Each child As Form In f.MdiChildren
[code]....
It is working perfect in my test environment, even though I expected For Each loop will throw "Collection was modified; enumeration operation may not execute" exception. since on each child form Close() calls, f.MdiChidren collection get modified, that surprised me a lot. Can anybody tell me why it's not throwing that exception?However it throws "Collection was modified; enumeration operation may not execute" in a client system.
I have a multithreaded app that is throwing the following error.Collection was modified; enumeration operation might not execute.[code]I'm pretty sure the collection is being modified by another thread. I attempted to fix the problem with the SyncLock's but clearly I'm missing something here.I thought I could lock the object by properly using SyncLocks, am I just not locking the right object(s)? Or am I completely missing something here.Besides using SyncLocks what other options do I have to prevent this error. I was thinking perhaps a global variable to keep track critical code sections so that no 2 threads enter.I'm also a little confused about what collection is being modified my first guess was CLResultsDataTable. ResultsDataTable, but I'm not sure.This is an older project I just recently picked back up so I'm still stepping through a lot of code to try to figure out how/why this is happening
I realize this has been covered a million times before but with threading sometimes a problem is app specific. I have a multithreaded app that assigns a url to a thread which it then fetches and crawls. Now the function where I collect each threads items I have added synclocks assuming this would avoid alterations. But I get the "collection was modified, enumeration operation may not execute" error. look at my code:
For Each landingPage As String In landingPages 'logger.constructLog("Working on landingPage link: " & landingPage & " at " & DateTime.Now.ToString, True)
I've looked around at other forums and have seen that this is thrown because I am adding items to a collection in a for each statement. If I understand that right, I need a different way to populate my combobox here's the code.
[Code]...
This gets a list of all of the Shafts in the DB. I only need the name of the Shafts to be loaded into the combobox. What can I do to accomplish this without modifying the collection?
I get that error any time my form closes(Me.Close), even if I don't do anything to the form at all exept load another form like this: Form2.Show Me.Close().
I have some code that i cant work out why its happening and how to fix it. What im attempting to do is loop through the controls in a gridview and replace it with another control along with the text
Dim i As Integer Dim row As GridViewRow Dim rowCell As TableCellCollection = row.Cells
I have a dataset returned after executing a sql query. below is my code to access the returned dataset and I seem to get this error sometimes and not all the time this code executes Private Sub Timer1_Elapsed(ByVal sender As Object, ByVal e As System.Timers.ElapsedEventArgs) Handles Timer1.Elapsed Dim currentMethod As String = MethodBase.GetCurrentMethod.Name
I have an issue with a data base updating it won't update for me in debgging mode it is stopping here on this bit of code which is highlighted in red. the error which comes up is .(update requires a valid update command when passed datarow collection with modified rows.)
Public Sub UpdateDataSource(ByVal ChangedRows As database.dataset1) Try 'The data source only needs to be updated if there are changes pending. If (Not (ChangedRows) Is Nothing) Then
On "Me.Close" gives error "Collection was modified; enumeration operation may not execute." on Windows XP.The code works fine on Windows 7. I can not understand what is causing the problem.
I am completly flummoxed!!! I have writen code for updating my table from a form but when I use the same code only changing the table names it wont work I get the following message: "Update requires a valid Update Command when passed DataRow collection with modified rows" My codes are as follows:
I'm have a data management program. I've fixed everything in it, except when I run my Insert or update commands on a different computer I've installed it on, JIT tells me that the collection has be modified, it then gives me the option to continue or quit. I know it's been modified, the user knows it's been modified, how do I get rid of that?
I am trying to refresh my combobox when an item is selected and added the highlighted code as shown below; [code]Items collection cannot be modified when the DataSource property is set.
I have two tables "Person" and "Alias" in a one to many relationship. I have a DGV for "Person" and want to use a combobox for the Aliases. I also have a textbox and a button for the user to type the alias name and click the button to add the alias name to the combobox and update the dataset. I keep getting the "Items collection cannot be modified when the DataSource property is set." Error. But if i use a DGV instead of a combobox for aliases, I have no errors and everything works fine. If I remove the datasource property for the combobox it will not get populated with the data already entered, so how, or can I, set it up where the combobox gets populated when the form loads and able to add items to the combobox????
Like i want it to read the lines i have in the text file but i get an error Each time i press the button Why?
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click Dim objreader As New System.IO.StreamReader("C:UsersJamesDesktopMusicas.txt") Do Until objreader.EndOfStream
[code]....
Error:
Quote:
Items collection cannot be modified when the DataSource property is set.
I have looked at multiple posts regarding this issue, but can't seem to find a solution. To keep it simple I have an Access database with a single table. It does have a field as a primary key. When I click the save icon on the Binding Navigator I get this error having to do with the following code:
I cannot set the Refresh the Data Table check box in Advanced Options of the TableAdapter Configuration Wizard as it is grayed out. Once again, I have a primary key.
The posts I have reviewed indicate that an UpdateCommand needs to be created, but I can't understand how it should be done. W
I have just received an interesting feedback from a VB.NET customer using our product - for some reason intellisense hidden a certain enumeration value.After a small testing I have found that this is likely a bug in IntelliSense: [URL]..To be honest, I did not expect this problem with such a basic stuff like this. Have you seen this in the past? For me, it doesn't work in all VS versions...
Anyway, feel free to track this issue if you are coding in VB.NET.