Is the `ProcessFile()` running on UIThread or a separate thread. If it is on the UIThread, how to move file request and ProcessFile() to a separate `Thread`? 

```
var xClient = new ServiceReference1.Service1SoapClient();
 xClient.Retrieve_File_Completed += new EventHandler<ServiceReference1.Retrieve_File_CompletedCompletedEventArgs>(xClient_Retrieve_File_Completed);
.
.//called on Page load
foreach(fileName in fileNames)
{
     xClient.Retrieve_FileAsync(fileName); 
}
.
.
void xClient_Retrieve_File_Completed(object sender, ServiceReference1.Retrieve_File_CompletedCompletedEventArgs e)
{
   //Processing 
   ProcessFile(e.Result[0]); //Is this on UI Thread?
}

```

EDIT: From the answers, it is clear that `ProcessFile()` runs on UI thread. How could the file requests and the processing (`ProcessFile()`) be moved to a separate Thread. `ProcessFile` just populates some data structures using which UI is changed after all the files are received.