Запишите это в свой метод загрузки формы MDI.
Controls.OfType<MdiClient>().FirstOrDefault().BackColor = Color.Purple;
Если ключевое слово volatile
используется с переменной, все потоки получат последнее значение переменной из основной памяти. Обратите внимание, что он не получает блокировку, поэтому, если вы хотите выполнить какую-либо атомарную операцию, volatile
недостаточно. Для атомарных операций используется synchronized
. В вашем случае вы только читаете значение m_gameState = a_gameState;
, так что энергозависимо достаточно.
Надеюсь, это поможет.
Доступ к энергозависимой переменной действует так, как если бы она была синхронизирована сама по себе.
Доступ к энергозависимой переменной никогда не удерживает блокировку, он не подходит для случаев, когда мы хотим читать-обновлять-записывать как элементарную операцию. Здесь необходимо использовать синхронизированный блок.
Для других случаев будет достаточно, если вы не использовали синхронизацию (как обычные get и set)
Это зависит. Требуете ли вы, чтобы обновления вашего поля EGameState
были упорядочены или нет?
Если они должны быть упорядочены, то блок synchronized
(на this
) является обязательным, если нет, то volatile
достаточно.
volatile
автоматическая загрузка / сохранение в заборе; чтение и запись являются атомарными; вам не нужно ничего синхронизировать в опубликованном примере.