public IEnumerable <Task <double> > GetValues() { while (true) { yield return(Task.FromResult(-1d)); yield return(SensorData.GetDataAsync("iddqd")); yield return(SensorData.GetDataAsync("idkfa")); } }
public async Task Tasks_FromAsync() { var ids = new string[] { "iddqd", "idkfq", "abba5", "acdc1" }; var tasks = new List <Task <double> >(); foreach (var id in ids) { var dataTask = SensorData.GetDataAsync(id); tasks.Add(dataTask); } var results = await Task.WhenAll(tasks); }
public async Task Tasks_FromAsync() { var ids = new string[] { "iddqd", "idkfq", "abba5", "acdc1" }; var tasks = new List <Task <double> >(); foreach (var id in ids) { var dataTask = SensorData.GetDataAsync(id); tasks.Add(dataTask); } var results = await Task.WhenAll(tasks); var tasksLinq = ids.Select(e => SensorData.GetSensorAsync(e)).ToList(); var results2 = await Task.WhenAll(tasksLinq); // Select is lazy, but now tasksLinq is a List var high = tasksLinq.Where(e => e.Result.Data > 10).ToList(); }
public async Task AsyncAwait_Comparison() { // Warmup SensorData.GetDataSync("iddqd"); await SensorData.GetDataAsync("iddqd"); var sw = Stopwatch.StartNew(); var syncResult1 = SensorData.GetDataSync("iddqd"); var syncResult2 = SensorData.GetDataSync("idkfa"); var syncResult3 = SensorData.GetDataSync("abba5"); var syncResult4 = SensorData.GetDataSync("acdc1"); var syncTime = sw.ElapsedMilliseconds; sw = Stopwatch.StartNew(); var r1 = await SensorData.GetDataAsync("iddqd"); var r2 = await SensorData.GetDataAsync("idkfa"); var r3 = await SensorData.GetDataAsync("abba5"); var r4 = await SensorData.GetDataAsync("acdc1"); var asyncTime = sw.ElapsedMilliseconds; sw = Stopwatch.StartNew(); var t1 = SensorData.GetDataAsync("iddqd"); var t2 = SensorData.GetDataAsync("idkfa"); var t3 = SensorData.GetDataAsync("abba5"); var t4 = SensorData.GetDataAsync("acdc1"); var results = await Task.WhenAll(t1, t2, t3, t4); var awaitTime = sw.ElapsedMilliseconds; }