Скорее всего, у вас есть код, добавляющий элементы в словари. Я вижу, что они оба публичны. Возможно, было бы хорошо сделать их приватными и открывать методы словаря только через методы-оболочки. Затем вы можете установить точку останова в этих методах-обертках, чтобы узнать, какой другой код обращается к вашим словарям.
Например:
public static class Control
{
//Change these to private
private static Dictionary<PlayerIndex, GamePadState> gamePadState = new Dictionary<PlayerIndex,GamePadState>();
private static Dictionary<PlayerIndex, GamePadState> oldGamePadState = new Dictionary<PlayerIndex, GamePadState>();
public void AddOld(PlayerIndex index, GamePadState state)
{
oldGamePadState[index] = state; // Set breakpoint here
// When the breakpoint trips, look at the stack trace to find out
// who is calling this method
}
public void AddNew(PlayerIndex index, GamePadState state)
{
gamePadState[index] = state;
}
}
Подробнее о том, почему обычно лучше использовать общедоступные свойства (методы получения и установки), а не обычные открытые переменные, см. этот ответ stackoverflow .