using System.Threading.Tasks;
delegate int SampleDelegate(string data);
public class AsyncExample
public static void Main()
SampleDelegate counter = new SampleDelegate(CountCharacters);
SampleDelegate parser = new SampleDelegate(Parse);
IAsyncResult counterResult = counter.BeginInvoke("hello", null, null);
IAsyncResult parserResult = parser.BeginInvoke("10", null, null);
Console.WriteLine("Main thread continuing");
Console.WriteLine("GetLength returned: {0}", GetLength("Fabulous").GetAwaiter().GetResult());
Console.WriteLine("Counter returned {0}", counter.EndInvoke(counterResult));
Console.WriteLine("Parser returned {0}", parser.EndInvoke(parserResult));
Console.WriteLine("Done");
static async Task<int> GetLength(string text)
static int CountCharacters(string text)
Console.WriteLine("Counting characters in {0}", text);
static int Parse(string text)
Console.WriteLine("Parsing text {0}", text);