Назад к задачам
Junior — Senior
13

Потокобезопасное изменение глобальных конфигураций в многопоточном приложении

Получайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Условие задачи

В каких ситуациях данный код может приводить к ошибкам и какие подходы помогут устранить эти проблемы?

class SettingsManager
    {
        public static string ServiceUrl { get; private set; }
        public static string ServiceUser { get; private set; }
        public static string ServicePassword { get; private set; }

        private static object syncRoot = new object();

        public static async Task RefreshSettings(string configPath)
        {
            try
            {
                Monitor.Enter(syncRoot);

                var lines = await File.ReadAllLinesAsync(configPath);

                ServiceUrl = lines[0];
                ServiceUser = lines[1];
                ServicePassword = lines[2];
            }
            finally
            {
                Monitor.Exit(syncRoot);
            }
        }
    }