Có lẽ ai đó có thể chỉ cho tôi theo đúng hướng, bởi vì tôi hoàn toàn bối rối về điều này.Lạ "Bộ sưu tập đã được sửa đổi sau khi điều tra được khởi tạo" ngoại lệ
Tôi có một chức năng mà chỉ đơn giản in ra một LinkedList các lớp:
LinkedList<Component> components = new LinkedList<Component>();
...
private void PrintComponentList()
{
Console.WriteLine("---Component List: " + components.Count + " entries---");
foreach (Component c in components)
{
Console.WriteLine(c);
}
Console.WriteLine("------");
}
Đối tượng Component
thực sự có một phong tục gọi ToString()
như vậy:
int Id;
...
public override String ToString()
{
return GetType() + ": " + Id;
}
Chức năng này thường hoạt động tốt - tuy nhiên Tôi đã gặp vấn đề khi nó xây dựng cho khoảng 30 mục nhập trong danh sách, báo cáo PrintcomplentList
foreach
quay trở lại với InvalidOperationException: Collection was modified after the enumerator was instantiated.
Bây giờ bạn có thể thấy tôi không sửa đổi mã trong vòng lặp for, và tôi đã không tạo ra bất kỳ chủ đề nào rõ ràng, mặc dù điều này nằm trong môi trường XNA (nếu nó quan trọng). Cần lưu ý rằng bản in thường xuyên đủ để đầu ra Console làm chậm toàn bộ chương trình.
Tôi hoàn toàn bối rối, có ai khác ngoài đó chạy vào điều này không?
Điều đó nghe có vẻ kỳ lạ. Bạn có thể đăng một chương trình ngắn nhưng * hoàn chỉnh * để chúng tôi có thể thử tái tạo nó không? –
Tôi sẽ thấy những gì tôi có thể làm. – cyberconte
Tôi không có một chương trình nhỏ để tái tạo hành vi, vì vậy tôi sẽ xem xét về việc thực hiện an toàn thread của LinkedList trong đó để xem nó có bắt được bất cứ điều gì không? – cyberconte