2017-02-08 19 views
0

Я использую свойство IsOn для переключателей тумблеров, и когда я пытаюсь как получить, так и установить свойство IsOn для коммутатора, он просто сбой с переполнением system.stack исключение. Как это можно решить? Или я могу установить состояние тумблера другими способами? (Switch1_Toggled происходит путем взаимодействия человека, перед методом turnit)Приложение UWP отключает исключение стека owerflow при включении переключателя XAML по коду C#

public void turnit() 
    { 
     Switch1.IsOn = true; 
    } 

    public void Switch1_Toggled(object sender, RoutedEventArgs e) 
    { 
     if(Switch1.IsOn) 
     { 
      request = "11"; 
     } 
     else 
     { 
      request = "10"; 
     } 
     SendRequest(); 
     //ReceiveResponse(); 
     //statusupdater(); 
     turnit(); 
    }  

ответ

3

Вы столкнулись бесконечный цикл. При нажатии переключателя через Switch1.IsOn = true;, он будет инициировать метод обработчика Switch1_Toggled, который, в свою очередь, вызывает turnit(), что, в свою очередь, ...

переполнение стека происходит потому, что не хватает места в памяти стека для хранения бесконечную глубину о призыве наследственности.

Удалите вызов turnit внутри обработчика, и вы должны быть хорошими.

+0

Цистерны! Если я вызову 'turnit()' другим методом, у него не будет ошибки? Я думал, что событие с переключением может произойти только при взаимодействии с пользователем ... На самом деле большое спасибо за быстрый ответ! –

+0

Правильно: вызов 'turnit()' в другом месте прекрасен. Я только создал несколько приложений UWP, но из того, что я могу сказать, привязки и обработчики событий работают довольно последовательно все время, даже если они вызваны из кода (в отличие от приложений WinForms в некоторых ситуациях). Рад помочь! Счастливое кодирование! – ryancdotnet