Are you calling the web service synchronously or asynchronously? Looks like before your code has a chance to update the DataSource of the DataGrid on your Form, the Timer Tick sends your code again to grab data from the server. Probably it might help to make sure unless you've gotten finished with results of the Web Service call, you don't call the service again. A boolean flag can help you do that.
If you're calling the service asynchronously, make sure you've specified a callback method that would be called when results of the Web Service call are available. You would bind the resultant DataSet to the DataGrid from within the callback method.
Hope it helps.