Chương trình của tôi tạo một số chủ đề cho một số tác vụ.ManagedThreadID không phải là duy nhất?
Mã của tôi là như thế này:
Dictionary<int, double> threadStates = new Dictionary<int, double>();
for (int i = 0; i < SubNNs.Count(); i++)
{
Thread tt = new Thread(StartTrainingSubs);
threadStates.Add(tt.ManagedThreadId, 0);
tt.Priority = ThreadPriority.Highest;
tt.Start(i);
}
Nhưng đôi khi, nếu SubNNs.Count()
trở nên lớn (10-20), Chương trình ném ngoại lệ này: "Một mục với cùng một chìa khóa đã được thêm vào" tại dòng threadStates.Add(tt.ManagedThreadId, 0);
Tại sao tôi đưa ra lỗi này? Không phải là ManagedThreadId
duy nhất? Nếu có, tôi nên làm gì?
và Nếu không, có thể luồng hoàn tất và một chuỗi khác bắt đầu bằng cùng một ManagedThreadId
? Có thể không? làm thế nào để ngăn chặn vấn đề này?
Hoặc có sự cố khác?
EDIT: Người dùng cho biết rằng ManagedThreadId có thể được sử dụng lại. Vì vậy, vì trong các phần sau của mã, mỗi thread cần phải biết chính nó với một số duy nhất, có cách nào để thêm một cái gì đó giống như một tên cho thread mà mỗi thread có thể nhận được số duy nhất của nó?
Cảm ơn bạn đã thông báo!
Có, ID luồng được tái chế. –