Bueno no he revisado demasiado tú código pero para ir al grano por que no tratas de poner algunos
puntos de ruturas(Break point) en las instruciones que sospeches que son la causante del error.

. En otras palabras por que no debugeas(Debug) tu aplicacion.

.
Saludos...

__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7