Пример #1
0
    public async Task Run(uint attempts, TimeSpan timeBetweenAttempts)
    {
        var celcius      = RandomTemperature();
        var cancelSource = new CancellationTokenSource();

        await SetTemperatureAsync(celcius);

        var getTemps = GetTemperatures(cancelSource.Token);

        for (var i = 1; i < attempts; i++)
        {
            await StopwatchExtension.RunAsync(
                $"{ID}: attempt {i+1}",
                async() => {
                await Task.Delay(timeBetweenAttempts);
                celcius = ChangeTemperature(celcius);
                return(await SetTemperatureAsync(celcius));
            }
                );
        }
        Console.WriteLine($"{ID}: done setting temperatures");
        cancelSource.Cancel();
        await getTemps;
        await channel.ShutdownAsync();

        Console.WriteLine($"{ID}: ALL DONE");
    }
Пример #2
0
 private async Task <Empty> SetTemperatureAsync(float celcius)
 {
     Console.WriteLine($"{ID}: Setting temperature to {celcius}");
     return(await StopwatchExtension.RunAsync <Empty>($"{ID} setTemperature {celcius}",
                                                      () => client.set_temperatureAsync(new Temperature {
         Device = ID,
         Celcius = celcius
     }).ResponseAsync
                                                      ));
 }