Почему состояние беспроводной радиосвязи не обновляется, когда я его меняю?

Я пытаюсь создать простое приложение для переключения радио WiFi на устройстве Windows Mobile и обнаружил, что пространство имен OpenNETCF.WIndowsMobile предоставляет несколько гемов, чтобы сделать эту задачу очень простой:

    private void button2_Click(object sender, EventArgs e)
    {
         var wifiRadio = (from radio in Radios.GetRadios()
               where radio.RadioType == RadioType.WiFi
               select radio).FirstOrDefault();

        if (wifiRadio != null)
            switch (wifiRadio.RadioState)
            {
                case RadioState.Off:
                    wifiRadio.RadioState = RadioState.On;
                    button2.Text = "Is On";
                    break;
                case RadioState.On:
                    wifiRadio.RadioState = RadioState.Off;
                    button2.Text = "Is Off";
                    break;
                default:
                    throw new ArgumentOutOfRangeException();
            }                            
    }

Это отлично работает с первого клика. На всех последующих щелчках RadioState по-прежнему сообщает о том же (хотя радио было переключено).

После перезапуска приложения RadioState снова вернется в правильное состояние.

Есть ли способ обновить состояние, чтобы оно сообщало правильно?

1 ответ

Решение

Я обнаружил, что есть метод обновления. Если кому-то еще нужно знать, вот как вы можете его использовать:

        private void button2_Click(object sender, EventArgs e)
    {
        var radios = Radios.GetRadios();
        radios.Refresh();

        var wifiRadio = (from radio in radios
               where radio.RadioType == RadioType.WiFi
               select radio).FirstOrDefault();

        if (wifiRadio != null)
            switch (wifiRadio.RadioState)
            {
                case RadioState.Off:
                    wifiRadio.RadioState = RadioState.On;
                    button2.Text = "Is On";
                    break;
                case RadioState.On:
                    wifiRadio.RadioState = RadioState.Off;
                    button2.Text = "Is Off";
                    break;
                default:
                    throw new ArgumentOutOfRangeException();
            }                            
    }
}
Другие вопросы по тегам