C#按钮执行ASync方法。 (尝试加入Web Api(Phillips Hue))

问题描述 投票:1回答:1

所以我只是尝试制作应用程序,按下按钮并关闭灯光。简单吧?但我是个笨蛋。 所以我以前从未玩过Web API(或任何api,真的)。我跟着This MS Doc抓住它。修改它使其工作,但它(显然)。 在Button_Click中RunUpdate错误'MainPage.Runupdate()'是一个方法,在给定的上下文中不是valiud'

这可能是一个简单的修复,但我肯定会遇到更多。有人帮帮我吗?谢谢!

这是代码:

  public sealed partial class MainPage : Page
{
    static HttpClient client = new HttpClient();
    public class Light
    {
        //public string ID { get; set }
        public string Name { get; set; }
        public string state { get; set; }

    }
    public MainPage()
    {
        this.InitializeComponent();

        client.BaseAddress = new Uri("http://192.168.0.100/");
        client.DefaultRequestHeaders.Accept.Clear();
        client.DefaultRequestHeaders.Accept.Add(
            new MediaTypeWithQualityHeaderValue("application/json"));


    }

    static async Task<Light> GetLightAsync(string path)
    {
        Light light = null;
        HttpResponseMessage response = await client.GetAsync(path);
        if(response.IsSuccessStatusCode)
        {
            light = await response.Content.ReadAsAsync<Light>();

        }
        return light;
    }

    static async Task<Light> UpdateLightAsync(Light light)
    {
        HttpResponseMessage response = await client.PutAsJsonAsync(
            $"api/api/RjplsYoXQvdTl11DOVIo92SKNB7vYRfwZvqCzvDK/lights/1/state/", light.state);
        response.EnsureSuccessStatusCode();

        light = await response.Content.ReadAsAsync<Light>();
        return light;
    }

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        RunUpdate.GetAwaiter().GetResult();

    }

    static async Task RunUpdate()
    {
        Light light = new Light { Name = "Unknown", state = "off" };

        light = await UpdateLightAsync(light);

    }

}
c# api
1个回答
1
投票

好吧,RunUpdate()是一个方法 - 你从Button_Click :)忘记了RunUpdate调用中的括号

© www.soinside.com 2019 - 2024. All rights reserved.