Что происходит при назначении одного и того же обработчика событий для объекта акселерометра? WP7 - PullRequest
0 голосов
/ 24 декабря 2011

У меня есть страница в моем приложении, где я должен взять показания акселерометра. Итак, у меня есть переменная acc типа Accelerometer, которая статична для класса, соответствующего странице, и у меня есть следующие утверждения в конструкторе класса

acc = new Accelerometer();
acc.Start();
acc.ReadingChanged += new EventHandler<AccelerometerReadingEventArgs>(Acc_Reader);

Acc_Reader обновляет переменную, принимая показания акселерометра. Я должен быть в состоянии перейти на другие страницы с акселерометром, работающим в фоновом режиме. Но когда я возвращаюсь на эту страницу, переменная, которая обновляется Acc_Reader, начинает обновляться примерно в два раза чаще, чем должна обновляться. Он прекрасно работает, если вы не переходите на другие страницы и не возвращаетесь на эту страницу. Итак, я предполагаю, что это как-то связано с конструктором этого класса (потому что он вызывается снова), который содержит приведенный выше код.

Как я могу это исправить?

1 Ответ

0 голосов
/ 24 декабря 2011

Удаление переменной acc перед ее инициализацией работает.то есть

if (acc != null) acc.Dispose();
acc = new Accelerometer();
acc.Start();
acc.ReadingChanged += new EventHandler<AccelerometerReadingEventArgs>(Acc_Reader);

Итак, я думаю, что таким образом вы очищаете уже работающий экземпляр, прежде чем создавать новый.

...