Iniciar y finalizar programa pulsando un botón

Error.

La primera vez

1 - 0 = 1

la siguiente

1 - 1 = 0

y etc..

Sería equivalente a

state = !state;

si state en lugar de ser int (que para mi es un desperdicio de memoria) fuese del tipo bool.

Saludos