How to make BackgroundWorker return an object
I need to make RunWorkerAsync() return a List<FileInfo> . How can I return an object from a background worker? In your DoWork event handler for the BackgroundWorker (which is where the background work takes place) there is an argument DoWorkEventArgs . This object has a public property object Result. When your worker has generated its result (in your case, a List<FileInfo> ), set e.Result to that, and return. Now that your BackgroundWorker has completed its task, it triggers the RunWorkerCompleted event, which has a RunWorkerCompletedEventArgs object as an argument. RunWorkerCompletedEventArgs