Ciao,
io programmo in VB e così, sarà un po' spartano, ma a me funziona.
Credo che non avrai difficoltà a tradurlo in C#.
Fammi sapere se va bene non vorrei aver fatto qualche gaffe 
Dim Partenza(4), Inizio(4), Fine(4), ContP, ContI, ContF As Integer
ContP = 0
ContI = 0
ContF = 0
Partenza(0) = 1
Partenza(1) = 60
Partenza(2) = 125
Partenza(3) = 134
Partenza(4) = 255
Do While ContP < Partenza.Length
Try
If Partenza(ContP + 1) - Partenza(ContP) > 30 Then
Inizio(ContI) = Partenza(ContP)
Fine(ContF) = Partenza(ContP)
ContI += 1
ContF += 1
Inizio(ContI) = Partenza(ContP + 1)
Fine(ContF) = Partenza(ContP + 1)
ContI += 1
ContF += 1
Else
Inizio(ContI) = Partenza(ContP)
Fine(ContF) = Partenza(ContP + 1)
ContI += 1
ContF += 1
End If
ContP += 2
Catch ex As IndexOutOfRangeException
Inizio(ContI) = Partenza(ContP)
Fine(ContF) = Partenza(ContP)
Exit Do
End Try
Loop