Tôi đã ứng dụng multithreads và tôi nhận được lỗi nàyBộ sưu tập đã được sửa đổi, hoạt động liệt kê không thể thực hiện
************** Exception Text **************
System.InvalidOperationException: Collection was modified; enumeration operation may not execute.
at System.ThrowHelper.ThrowInvalidOperationException(ExceptionResource resource)
at System.Collections.Generic.List`1.Enumerator.MoveNextRare()
at System.Collections.Generic.List`1.Enumerator.MoveNext()
...
tôi có lẽ có vấn đề với bộ sưu tập của tôi, bởi vì trên một thread tôi đọc bộ sưu tập của tôi và trên thread khác tôi sửa đổi bộ sưu tập.
public readonly ObservableCollectionThreadSafe<GMapMarker> Markers = new ObservableCollectionThreadSafe<GMapMarker>();
public void problem()
{
foreach (GMapMarker m in Markers)
{
...
}
}
Tôi đang cố khóa bộ sưu tập bằng mã này nhưng không hoạt động.
public void problem()
{
lock(Markers)
{
foreach (GMapMarker m in Markers)
{
...
}
}
}
Bất kỳ ý tưởng nào để khắc phục sự cố đó?
Bạn vấn đề là với mã bên trong 'foreach', xin vui lòng gửi nó. – nemesv
bạn không thể sửa đổi bộ sưu tập trong khi lặp với foreach – Reniuz