Tôi có một chút mã mà làm việc như thế này trên một danh sách các đối tượng obj gọi ListofObjects:Thêm vào danh sách trong một vòng lặp Parallel.ForEach một cách threadsafe
List<SomeObject> NewListofObjects<SomeObject>();
Parallel.ForEach(ListofObjects, obj =>
//Do some operations here on obj to get a newobj
NewListofObjects.Add(newobj);
);
Bây giờ tôi ra khỏi Parallel .ForMỗi vòng lặp, và tôi muốn thực hiện một thao tác trên NewListofObjects. Tuy nhiên, tôi nhận được lỗi này khi tôi cố gắng: "Đã cố gắng đọc hoặc ghi bộ nhớ được bảo vệ. Đây thường là dấu hiệu cho thấy bộ nhớ khác bị hỏng".
Đây có phải là vì phương pháp NewListofObjects.Add (newobj) của tôi không phải là luồng an toàn không? Nếu vậy, làm thế nào tôi có thể làm cho nó threadsafe?
bạn đang làm gì bên trong (từ obj để đến newobj)? – terrybozzio
Một loạt các hoạt động khó mô tả ... nhưng tất cả chúng đều là các biến cục bộ được tạo trong mỗi lần lặp của danh sách đối tượng. Bạn đang chính xác trong yêu cầu này mặc dù ... Tôi đã không loại trừ ra rằng tất cả các hoạt động tôi đang làm trên đối tượng cũng có thể là nguyên nhân gốc rễ của vấn đề cụ thể này. – Conor