use Task.Factory.StartNew to fix strange Threading.Timer raise time