I'm reading a file from user upload and it was working synchronously. I needed to change it in order to immediately send a "received" alert to the user, then read the file asynchronously while the user would periodically poll back to see if the read was finished.

Here is what my code looks like right now:

```
public FileUpload SaveFile(Stream stream)
{
        FileUpload uploadObj = //instantiate the return obj

        var task = Task.Run(async () => await ProcessFileAsync(stream));

        return upload;
}

public async Task ProcessFileAsync(Stream stream)
{
        StreamReader file = new StreamReader(stream);
        CsvReader csv = new CsvReader(file, CultureInfo.InvariantCulture);

        while (await csv.ReadAsync())
        {
           //read the file
        }
}

```

the issue I'm having is that by the time I call the `csv.ReadAsync()` method, the Stream object has been disposed. How do I access the Stream when I want the `SaveFile()` method to return a value to the user, but the act of returning disposes the Stream object?