Passing a parameter to Niagara System from blueprint

You must write the name of the parameter as it is, without the namespace (User)
So you have to write Distance instead of User.Distance

You can also of course set parameter values on Tick, however depending on when the system reads the variables, you might not see a result. For example if the system only reads the variable on EmitterSpawn, or maybe even ParticleSpawn, any existing loops or particles will not react to an updated value, unless they handle it in their Updates
In your case you seem to be reading it on Update so it should work

Also if you want to kill all particles of a system or emitter, you can Deactivate the system, or use SetEmitterEnable to deactivate a specific emitter in the system
Then in your System/Emitter State modules you can specify the inactive response, and one of the options is to kill the particle instantly.

You can always do Activate/SetEmitterEnable(true) later to restart the system/emitter, and let new particles spawn again