2015-02-21 4 views
0

Мне нужно показать форму настройки для пользователя, сохранить результаты в файле конфигурации и всегда использовать последние настройки в фоновом потоке основной формы.Обработка одновременного доступа к настройкам

Каков наилучший способ избежать ситуаций, таких как состояние гонки в этом случае (чтение и запись в файл конфигурации одновременно)? Какова наилучшая практика в C# и Windows Forms?

Чтобы быть более точным, у меня есть глобальные горячие клавиши, которая открывает форму настроек, как это:

var settingsForm = new SettingsForm(); 
settingsForm.Show(); 

На этой настройки сформировать у меня есть две кнопки - «Ok» и «Отмена». Когда пользователь нажимает кнопку «Ok», новые настройки записываются в файл конфигурации.

В основной форме у меня есть фоновый поток с бесконечным циклом, который делает некоторые вещи с текущими настройками.

Заранее спасибо.

+0

«Лучший способ» и «лучшая практика» основаны на мнениях, если вы не предъявляете никаких конкретных требований. Существуют различные решения, возможность каждого из них зависит от того, что на самом деле делает ваш код. Конечно, эта проблема не является уникальной для хранения и получения конфигурации приложения. Что вы нашли? Совместное использование ваших исследований помогает. – CodeCaster

+1

Использование блокировок - это простое решение: https://msdn.microsoft.com/en-us/library/c5kehkcz.aspx – Aaron

+0

@CodeCaster Done – FrozenHeart

ответ

0

Настройки в настройках проекта Visual Studio должны быть точными. Сгенерированный код инициализирует ApplicationBase, который синхронизирован (потокобезопасен) для вас. Вы можете легко сохранить настройки с помощью метода Save() и получить доступ к настройкам от Properties.Settings.Default из любого потока.

+0

У меня есть настройки настроек INI, подобные этому - http://stackoverflow.com/questions/217902/reading-writing-an-ini-file – FrozenHeart

+0

Уйти от INI, если можете, но если вы уже имеете доступ к INI через WinAPI, не должно быть проблем с безопасностью потока. – tia

+0

Что вы подразумеваете под словом «Уйти от INI, если сможете»? И вы думаете, что «если вы уже имеете доступ к вашему INI через WinAPI, это не проблема с потоковой безопасностью»? – FrozenHeart

Смежные вопросы