public override int CompareTo(object obj) { Task <TContext> item = obj as Task <TContext>; if (item == null) { return(-1); } int result = m_next_execution_time.CompareTo(item.m_next_execution_time); if (result != 0) { return(result); } else { return(_insertion_index - item._insertion_index); } }