This paper explores the problem of dynamically scheduling large scale applications over wide area networks and then proposes an adaptive scheduling algorithm to provide quality of service. Our adaptive algorithm takes into account unexpected events and priority fluctuations and gives high priority to jobs with low probability of failure. Experimental results show that the new approach outperforms traditional scheduling approaches in grid computing environments.