How to wait until OnRunFinished is executed

You can't do that currently because the instances are signaled to run and they only execute on main thread (after your loop finished and execution goes idle).