Func<string> ler = () =>
File.ReadAllText(@"C:test.txt");
var handle = ler.BeginInvoke(null, null);
//qualquer outro código
var resultado = ler.EndInvoke(handle);
var req = WebRequest.Create("http://google.com");
var handle = req.BeginGetRequestStream(null, null);
//qualquer código
var stream = req.EndGetRequestStream(handle);
MESMA THREAD QUE CHAMOU O MÉTODO
POTENCIALMENTE NOVA THREAD
private async void button1_Click(object sender, EventArgs e)
{
var http = new HttpClient();
page.Text = "Loading...";
page.Text = await http.GetStringAsync("http://google.com");
}