Move actual work into a background thread. Expose and event that it started and one when it ends to notify interested parties. Expose the timing mechanism in the event so it could be used to monitor progress.