En docs.microsoft.com dice:
Tenga en cuenta que aunque las colisiones son muy raras, no se garantiza que los identificadores de tareas sean únicos.
¿Significa esto que puede haber tareas con los mismos ID en el montón al mismo tiempo? ¿O quiere decir que no puede ser, pero hay tareas con IDs que ya tenían otras tareas que ya no existen?
Significa que si crea 4.294.967.295 tareas y lee la propiedad Id de cada una de ellas, la primera y la última tarea tendrán el valor 1 como Id .
Puede ver el código fuente de la propiedad Task.Id aquí . A continuación se muestra la esencia de este código:
public class Task { private volatile int m_taskId; public int Id { get { if (m_taskId == 0) { int newId = NewId(); Interlocked.CompareExchange(ref m_taskId, newId, 0); } return m_taskId; } } internal static int s_taskIdCounter; internal static int NewId() { int newId = 0; do { newId = Interlocked.Increment(ref s_taskIdCounter); } while (newId == 0); return newId; } }