Si no puede depender de salir correctamente de la aplicación o al menos capturar todas las excepciones y manejarlas adecuadamente, creo que la única alternativa sería ir a un enfoque de sesión. Básicamente, cuando cada usuario inicia sesión, se establece una nueva sesión y es esa identificación de sesión la que se validará para futuras llamadas.
Al hacer esto, puede permitir que el usuario finalice una sesión existente/abierta cuando intentan iniciar sesión en otro lugar. Si intentan iniciar sesión desde la PC B y ya iniciaron sesión desde la PC A, simplemente ingrese eso en un aviso y si eligen continuar desde la PC B, la sesión en la PC A se desactiva. Incluso si alguien está usando activamente la aplicación en la PC A, la próxima llamada de servicio que emita debe rechazarse cuando se cierra la sesión.