我使用 dotMorten 的名为 LifxNet 的 nuget 包。我可以改变灯泡的颜色并打开和关闭它。我现在想要一个切换灯泡电源的按钮。我正在尝试使用 GetLightStateAsync() 方法来检查灯是打开还是关闭。
private void btnPower_Click(object sender, RoutedEventArgs e)
{
var powerState = client.GetLightStateAsync(selectedLight).Result.IsOn;
if (powerState == false)
{
client.SetDevicePowerStateAsync(selectedLight, true);
}
if (powerState == true)
{
client.SetDevicePowerStateAsync(selectedLight, false);
}
}
当我运行此代码时,整个应用程序都会挂起。当我暂停代码时,它告诉我它的代码行也是:
var powerState = client.GetLightStateAsync(selectedLight).Result.IsOn;
我试过以不同的方式运行它,我发现当你将 .Result 添加到代码中时它会挂起。如果您删除 .Result.IsOn 并注释掉 if 语句,那么程序将运行良好。我不知道出了什么问题,我会很感激一些帮助。