This is a problem of inversion of control, see
http://en.wikipedia.org/wiki/Inversion_of_control[
^].
In your case the problem is: you DLL provides some resource to be used in a host application. If your application is the only source of causality, you cannot solve your problem, because only your host application triggers a call. You need inverted situation: your DLL needs to call something which triggers the event presenting a step in the host's UI. The solution is a callback method. A class in a DLL should accept callback and call this callback (let's say "OnProgressStep"); a host application should provide a callback code.
—SA