Существует несколько способов, с помощью которых вы можете подойти к этому решению, но вы можете сигнализировать об этом процессе и на основе того, что вы отправляете с этим сигналом, он должен выполнить свой «очищающий» код. По завершении процесса, который породил его, должно быть указано, что он завершил очистку кода и может завершить его. Это, конечно, предполагает, что вы написали код как для службы Window, так и для процесса, который был порожден.
Вы можете попробовать Именованные каналы ( https://docs.microsoft.com/en-us/dotnet/standard/io/how-to-use-named-pipes-for-network-interprocess -communication )