change: deferJob to delayJob;
change: async call using std::async;
change: more grace way to make recursive call, may help on stackover problem;
change: pause everything when user close mainwindow.

Signed-off-by: liuyanghejerry <liuyanghejerry@126.com>