[SystemSettings] Add lock for EventHandler (#2036)
authorJinWang An <35290168+jinwangan@users.noreply.github.com>
Tue, 22 Sep 2020 06:18:02 +0000 (15:18 +0900)
committerGitHub <noreply@github.com>
Tue, 22 Sep 2020 06:18:02 +0000 (15:18 +0900)
* [SystemSettings] Add lock for EventHandler

Signed-off-by: JinWang An <jinwang.an@samsung.com>
* Fix indent for Lockobj

Signed-off-by: JinWang An <jinwang.an@samsung.com>
src/Tizen.System.SystemSettings/Tizen.System.SystemSettings/SystemSettings.cs [changed mode: 0755->0644]

old mode 100755 (executable)
new mode 100644 (file)
index 8b7bfa2..26de96d
@@ -29,6 +29,11 @@ namespace Tizen.System
     public static class SystemSettings
     {
         /// <summary>
+        /// Lock for EventHandlers.
+        /// </summary>
+        private static readonly object LockObj = new object();
+
+        /// <summary>
         /// The file path of the current ringtone.
         /// </summary>
         /// <privilege>http://tizen.org/privilege/systemsettings.admin</privilege>
@@ -1203,30 +1208,36 @@ namespace Tizen.System
         {
             add
             {
-                if (s_incomingCallRingtoneChanged == null)
+                lock (LockObj)
                 {
-                    SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.IncomingCallRingtone, s_incomingCallRingtoneChangedCallback, IntPtr.Zero);
-                    if (ret != SystemSettingsError.None)
+                    if (s_incomingCallRingtoneChanged == null)
                     {
-                        throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.IncomingCallRingtone, s_incomingCallRingtoneChangedCallback, IntPtr.Zero);
+                        if (ret != SystemSettingsError.None)
+                        {
+                            throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        }
                     }
+                    s_incomingCallRingtoneChanged += value;
                 }
-                s_incomingCallRingtoneChanged += value;
             }
 
             remove
             {
-                if (s_incomingCallRingtoneChanged == null) {
-                    Tizen.Log.Info("Tizen.System.SystemSettings","There is no event handler");
-                    return;
-                }
-                s_incomingCallRingtoneChanged -= value;
-                if (s_incomingCallRingtoneChanged == null)
+                lock (LockObj)
                 {
-                    SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.IncomingCallRingtone, s_incomingCallRingtoneChangedCallback);
-                    if (ret != SystemSettingsError.None)
+                    if (s_incomingCallRingtoneChanged == null) {
+                        Tizen.Log.Info("Tizen.System.SystemSettings","There is no event handler");
+                        return;
+                    }
+                    s_incomingCallRingtoneChanged -= value;
+                    if (s_incomingCallRingtoneChanged == null)
                     {
-                        throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.IncomingCallRingtone, s_incomingCallRingtoneChangedCallback);
+                        if (ret != SystemSettingsError.None)
+                        {
+                            throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        }
                     }
                 }
             }
@@ -1255,30 +1266,36 @@ namespace Tizen.System
         {
             add
             {
-                if (s_wallpaperHomeScreenChanged == null)
+                lock (LockObj)
                 {
-                    SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.WallpaperHomeScreen, s_wallpaperHomeScreenChangedCallback, IntPtr.Zero);
-                    if (ret != SystemSettingsError.None)
+                    if (s_wallpaperHomeScreenChanged == null)
                     {
-                        throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.WallpaperHomeScreen, s_wallpaperHomeScreenChangedCallback, IntPtr.Zero);
+                        if (ret != SystemSettingsError.None)
+                        {
+                            throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        }
                     }
+                    s_wallpaperHomeScreenChanged += value;
                 }
-                s_wallpaperHomeScreenChanged += value;
             }
 
             remove
             {
-                if (s_wallpaperHomeScreenChanged == null) {
-                    Tizen.Log.Info("Tizen.System.SystemSettings","There is no event handler");
-                    return;
-                }
-                s_wallpaperHomeScreenChanged -= value;
-                if (s_wallpaperHomeScreenChanged == null)
+                lock (LockObj)
                 {
-                    SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.WallpaperHomeScreen, s_wallpaperHomeScreenChangedCallback);
-                    if (ret != SystemSettingsError.None)
+                    if (s_wallpaperHomeScreenChanged == null) {
+                        Tizen.Log.Info("Tizen.System.SystemSettings","There is no event handler");
+                        return;
+                    }
+                    s_wallpaperHomeScreenChanged -= value;
+                    if (s_wallpaperHomeScreenChanged == null)
                     {
-                        throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.WallpaperHomeScreen, s_wallpaperHomeScreenChangedCallback);
+                        if (ret != SystemSettingsError.None)
+                        {
+                            throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        }
                     }
                 }
             }
@@ -1307,30 +1324,36 @@ namespace Tizen.System
         {
             add
             {
-                if (s_wallpaperLockScreenChanged == null)
+                lock (LockObj)
                 {
-                    SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.WallpaperLockScreen, s_wallpaperLockScreenChangedCallback, IntPtr.Zero);
-                    if (ret != SystemSettingsError.None)
+                    if (s_wallpaperLockScreenChanged == null)
                     {
-                        throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.WallpaperLockScreen, s_wallpaperLockScreenChangedCallback, IntPtr.Zero);
+                        if (ret != SystemSettingsError.None)
+                        {
+                            throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        }
                     }
+                    s_wallpaperLockScreenChanged += value;
                 }
-                s_wallpaperLockScreenChanged += value;
             }
 
             remove
             {
-                if (s_wallpaperLockScreenChanged == null) {
-                    Tizen.Log.Info("Tizen.System.SystemSettings","There is no event handler");
-                    return;
-                }
-                s_wallpaperLockScreenChanged -= value;
-                if (s_wallpaperLockScreenChanged == null)
+                lock (LockObj)
                 {
-                    SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.WallpaperLockScreen, s_wallpaperLockScreenChangedCallback);
-                    if (ret != SystemSettingsError.None)
+                    if (s_wallpaperLockScreenChanged == null) {
+                        Tizen.Log.Info("Tizen.System.SystemSettings","There is no event handler");
+                        return;
+                    }
+                    s_wallpaperLockScreenChanged -= value;
+                    if (s_wallpaperLockScreenChanged == null)
                     {
-                        throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.WallpaperLockScreen, s_wallpaperLockScreenChangedCallback);
+                        if (ret != SystemSettingsError.None)
+                        {
+                            throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        }
                     }
                 }
             }
@@ -1358,30 +1381,36 @@ namespace Tizen.System
         {
             add
             {
-                if (s_fontSizeChanged == null)
+                lock (LockObj)
                 {
-                    SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.FontSize, s_fontSizeChangedCallback, IntPtr.Zero);
-                    if (ret != SystemSettingsError.None)
+                    if (s_fontSizeChanged == null)
                     {
-                        throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.FontSize, s_fontSizeChangedCallback, IntPtr.Zero);
+                        if (ret != SystemSettingsError.None)
+                        {
+                            throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        }
                     }
+                    s_fontSizeChanged += value;
                 }
-                s_fontSizeChanged += value;
             }
 
             remove
             {
-                if (s_fontSizeChanged == null) {
-                    Tizen.Log.Info("Tizen.System.SystemSettings","There is no event handler");
-                    return;
-                }
-                s_fontSizeChanged -= value;
-                if (s_fontSizeChanged == null)
+                lock (LockObj)
                 {
-                    SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.FontSize, s_fontSizeChangedCallback);
-                    if (ret != SystemSettingsError.None)
+                    if (s_fontSizeChanged == null) {
+                        Tizen.Log.Info("Tizen.System.SystemSettings","There is no event handler");
+                        return;
+                    }
+                    s_fontSizeChanged -= value;
+                    if (s_fontSizeChanged == null)
                     {
-                        throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.FontSize, s_fontSizeChangedCallback);
+                        if (ret != SystemSettingsError.None)
+                        {
+                            throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        }
                     }
                 }
             }
@@ -1409,30 +1438,36 @@ namespace Tizen.System
         {
             add
             {
-                if (s_fontTypeChanged == null)
+                lock (LockObj)
                 {
-                    SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.FontType, s_fontTypeChangedCallback, IntPtr.Zero);
-                    if (ret != SystemSettingsError.None)
+                    if (s_fontTypeChanged == null)
                     {
-                        throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.FontType, s_fontTypeChangedCallback, IntPtr.Zero);
+                        if (ret != SystemSettingsError.None)
+                        {
+                            throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        }
                     }
+                    s_fontTypeChanged += value;
                 }
-                s_fontTypeChanged += value;
             }
 
             remove
             {
-                if (s_fontTypeChanged == null) {
-                    Tizen.Log.Info("Tizen.System.SystemSettings","There is no event handler");
-                    return;
-                }
-                s_fontTypeChanged -= value;
-                if (s_fontTypeChanged == null)
+                lock (LockObj)
                 {
-                    SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.FontType, s_fontTypeChangedCallback);
-                    if (ret != SystemSettingsError.None)
+                    if (s_fontTypeChanged == null) {
+                        Tizen.Log.Info("Tizen.System.SystemSettings","There is no event handler");
+                        return;
+                    }
+                    s_fontTypeChanged -= value;
+                    if (s_fontTypeChanged == null)
                     {
-                        throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.FontType, s_fontTypeChangedCallback);
+                        if (ret != SystemSettingsError.None)
+                        {
+                            throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        }
                     }
                 }
             }
@@ -1460,30 +1495,36 @@ namespace Tizen.System
         {
             add
             {
-                if (s_motionActivationChanged == null)
+                lock (LockObj)
                 {
-                    SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.MotionActivationEnabled, s_motionActivationChangedCallback, IntPtr.Zero);
-                    if (ret != SystemSettingsError.None)
+                    if (s_motionActivationChanged == null)
                     {
-                        throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.MotionActivationEnabled, s_motionActivationChangedCallback, IntPtr.Zero);
+                        if (ret != SystemSettingsError.None)
+                        {
+                            throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        }
                     }
+                    s_motionActivationChanged += value;
                 }
-                s_motionActivationChanged += value;
             }
 
             remove
             {
-                if (s_motionActivationChanged == null) {
-                    Tizen.Log.Info("Tizen.System.SystemSettings","There is no event handler");
-                    return;
-                }
-                s_motionActivationChanged -= value;
-                if (s_motionActivationChanged == null)
+                lock (LockObj)
                 {
-                    SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.MotionActivationEnabled, s_motionActivationChangedCallback);
-                    if (ret != SystemSettingsError.None)
+                    if (s_motionActivationChanged == null) {
+                        Tizen.Log.Info("Tizen.System.SystemSettings","There is no event handler");
+                        return;
+                    }
+                    s_motionActivationChanged -= value;
+                    if (s_motionActivationChanged == null)
                     {
-                        throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.MotionActivationEnabled, s_motionActivationChangedCallback);
+                        if (ret != SystemSettingsError.None)
+                        {
+                            throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        }
                     }
                 }
             }
@@ -1512,30 +1553,36 @@ namespace Tizen.System
         {
             add
             {
-                if (s_emailAlertRingtoneChanged == null)
+                lock (LockObj)
                 {
-                    SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.EmailAlertRingtone, s_emailAlertRingtoneChangedCallback, IntPtr.Zero);
-                    if (ret != SystemSettingsError.None)
+                    if (s_emailAlertRingtoneChanged == null)
                     {
-                        throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.EmailAlertRingtone, s_emailAlertRingtoneChangedCallback, IntPtr.Zero);
+                        if (ret != SystemSettingsError.None)
+                        {
+                            throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        }
                     }
+                    s_emailAlertRingtoneChanged += value;
                 }
-                s_emailAlertRingtoneChanged += value;
             }
 
             remove
             {
-                if (s_emailAlertRingtoneChanged == null) {
-                    Tizen.Log.Info("Tizen.System.SystemSettings","There is no event handler");
-                    return;
-                }
-                s_emailAlertRingtoneChanged -= value;
-                if (s_emailAlertRingtoneChanged == null)
+                lock (LockObj)
                 {
-                    SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.EmailAlertRingtone, s_emailAlertRingtoneChangedCallback);
-                    if (ret != SystemSettingsError.None)
+                    if (s_emailAlertRingtoneChanged == null) {
+                        Tizen.Log.Info("Tizen.System.SystemSettings","There is no event handler");
+                        return;
+                    }
+                    s_emailAlertRingtoneChanged -= value;
+                    if (s_emailAlertRingtoneChanged == null)
                     {
-                        throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.EmailAlertRingtone, s_emailAlertRingtoneChangedCallback);
+                        if (ret != SystemSettingsError.None)
+                        {
+                            throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        }
                     }
                 }
             }
@@ -1563,30 +1610,36 @@ namespace Tizen.System
         {
             add
             {
-                if (s_usbDebuggingSettingChanged == null)
+                lock (LockObj)
                 {
-                    SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.UsbDebuggingEnabled, s_usbDebuggingSettingChangedCallback, IntPtr.Zero);
-                    if (ret != SystemSettingsError.None)
+                    if (s_usbDebuggingSettingChanged == null)
                     {
-                        throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.UsbDebuggingEnabled, s_usbDebuggingSettingChangedCallback, IntPtr.Zero);
+                        if (ret != SystemSettingsError.None)
+                        {
+                            throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        }
                     }
+                    s_usbDebuggingSettingChanged += value;
                 }
-                s_usbDebuggingSettingChanged += value;
             }
 
             remove
             {
-                if (s_usbDebuggingSettingChanged == null) {
-                    Tizen.Log.Info("Tizen.System.SystemSettings","There is no event handler");
-                    return;
-                }
-                s_usbDebuggingSettingChanged -= value;
-                if (s_usbDebuggingSettingChanged == null)
+                lock (LockObj)
                 {
-                    SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.UsbDebuggingEnabled, s_usbDebuggingSettingChangedCallback);
-                    if (ret != SystemSettingsError.None)
+                    if (s_usbDebuggingSettingChanged == null) {
+                        Tizen.Log.Info("Tizen.System.SystemSettings","There is no event handler");
+                        return;
+                    }
+                    s_usbDebuggingSettingChanged -= value;
+                    if (s_usbDebuggingSettingChanged == null)
                     {
-                        throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.UsbDebuggingEnabled, s_usbDebuggingSettingChangedCallback);
+                        if (ret != SystemSettingsError.None)
+                        {
+                            throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        }
                     }
                 }
             }
@@ -1614,30 +1667,36 @@ namespace Tizen.System
         {
             add
             {
-                if (s_data3GNetworkSettingChanged == null)
+                lock (LockObj)
                 {
-                    SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.Data3GNetworkEnabled, s_data3GNetworkSettingChangedCallback, IntPtr.Zero);
-                    if (ret != SystemSettingsError.None)
+                    if (s_data3GNetworkSettingChanged == null)
                     {
-                        throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.Data3GNetworkEnabled, s_data3GNetworkSettingChangedCallback, IntPtr.Zero);
+                        if (ret != SystemSettingsError.None)
+                        {
+                            throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        }
                     }
+                    s_data3GNetworkSettingChanged += value;
                 }
-                s_data3GNetworkSettingChanged += value;
             }
 
             remove
             {
-                if (s_data3GNetworkSettingChanged == null) {
-                    Tizen.Log.Info("Tizen.System.SystemSettings","There is no event handler");
-                    return;
-                }
-                s_data3GNetworkSettingChanged -= value;
-                if (s_data3GNetworkSettingChanged == null)
+                lock (LockObj)
                 {
-                    SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.Data3GNetworkEnabled, s_data3GNetworkSettingChangedCallback);
-                    if (ret != SystemSettingsError.None)
+                    if (s_data3GNetworkSettingChanged == null) {
+                        Tizen.Log.Info("Tizen.System.SystemSettings","There is no event handler");
+                        return;
+                    }
+                    s_data3GNetworkSettingChanged -= value;
+                    if (s_data3GNetworkSettingChanged == null)
                     {
-                        throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.Data3GNetworkEnabled, s_data3GNetworkSettingChangedCallback);
+                        if (ret != SystemSettingsError.None)
+                        {
+                            throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        }
                     }
                 }
             }
@@ -1666,31 +1725,37 @@ namespace Tizen.System
         {
             add
             {
-                if (s_lockscreenAppChanged == null)
+                lock (LockObj)
                 {
-                    SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.LockScreenApp, s_lockscreenAppChangedCallback, IntPtr.Zero);
-                    if (ret != SystemSettingsError.None)
+                    if (s_lockscreenAppChanged == null)
                     {
-                        throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.LockScreenApp, s_lockscreenAppChangedCallback, IntPtr.Zero);
+                        if (ret != SystemSettingsError.None)
+                        {
+                            throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        }
                     }
+                    s_lockscreenAppChanged += value;
                 }
-                s_lockscreenAppChanged += value;
             }
 
             remove
             {
-                if (s_lockscreenAppChanged == null) {
-                    Tizen.Log.Info("Tizen.System.SystemSettings","There is no event handler");
-                    return;
-                }
-
-                s_lockscreenAppChanged -= value;
-                if (s_lockscreenAppChanged == null)
+                lock (LockObj)
                 {
-                    SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.LockScreenApp, s_lockscreenAppChangedCallback);
-                    if (ret != SystemSettingsError.None)
+                    if (s_lockscreenAppChanged == null) {
+                        Tizen.Log.Info("Tizen.System.SystemSettings","There is no event handler");
+                        return;
+                    }
+
+                    s_lockscreenAppChanged -= value;
+                    if (s_lockscreenAppChanged == null)
                     {
-                        throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.LockScreenApp, s_lockscreenAppChangedCallback);
+                        if (ret != SystemSettingsError.None)
+                        {
+                            throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        }
                     }
                 }
             }
@@ -1718,30 +1783,36 @@ namespace Tizen.System
         {
             add
             {
-                if (s_localeCountryChanged == null)
+                lock (LockObj)
                 {
-                    SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.LocaleCountry, s_localeCountryChangedCallback, IntPtr.Zero);
-                    if (ret != SystemSettingsError.None)
+                    if (s_localeCountryChanged == null)
                     {
-                        throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.LocaleCountry, s_localeCountryChangedCallback, IntPtr.Zero);
+                        if (ret != SystemSettingsError.None)
+                        {
+                            throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        }
                     }
+                    s_localeCountryChanged += value;
                 }
-                s_localeCountryChanged += value;
             }
 
             remove
             {
-                if (s_localeCountryChanged == null) {
-                    Tizen.Log.Info("Tizen.System.SystemSettings","There is no event handler");
-                    return;
-                }
-                s_localeCountryChanged -= value;
-                if (s_localeCountryChanged == null)
+                lock (LockObj)
                 {
-                    SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.LocaleCountry, s_localeCountryChangedCallback);
-                    if (ret != SystemSettingsError.None)
+                    if (s_localeCountryChanged == null) {
+                        Tizen.Log.Info("Tizen.System.SystemSettings","There is no event handler");
+                        return;
+                    }
+                    s_localeCountryChanged -= value;
+                    if (s_localeCountryChanged == null)
                     {
-                        throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.LocaleCountry, s_localeCountryChangedCallback);
+                        if (ret != SystemSettingsError.None)
+                        {
+                            throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        }
                     }
                 }
             }
@@ -1769,30 +1840,42 @@ namespace Tizen.System
         {
             add
             {
-                if (s_localeLanguageChanged == null)
+                lock (LockObj)
                 {
-                    SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.LocaleLanguage, s_localeLanguageChangedCallback, IntPtr.Zero);
-                    if (ret != SystemSettingsError.None)
+                    if (null == value)
+                        throw SystemSettingsExceptionFactory.CreateException(SystemSettingsError.InvalidParameter, "Error invalid callback");
+
+                    if (s_localeLanguageChanged == null)
                     {
-                        throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.LocaleLanguage, s_localeLanguageChangedCallback, IntPtr.Zero);
+                        if (ret != SystemSettingsError.None)
+                        {
+                            throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        }
                     }
+                    s_localeLanguageChanged += value;
                 }
-                s_localeLanguageChanged += value;
             }
 
             remove
             {
-                if (s_localeLanguageChanged == null) {
-                    Tizen.Log.Info("Tizen.System.SystemSettings","There is no event handler");
-                    return;
-                }
-                s_localeLanguageChanged -= value;
-                if (s_localeLanguageChanged == null)
+                lock (LockObj)
                 {
-                    SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.LocaleLanguage, s_localeLanguageChangedCallback);
-                    if (ret != SystemSettingsError.None)
+                    if (null == value)
+                        throw SystemSettingsExceptionFactory.CreateException(SystemSettingsError.InvalidParameter, "Error invalid callback");
+
+                    if (s_localeLanguageChanged == null) {
+                        Tizen.Log.Info("Tizen.System.SystemSettings","There is no event handler");
+                        return;
+                    }
+                    s_localeLanguageChanged -= value;
+                    if (s_localeLanguageChanged == null)
                     {
-                        throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.LocaleLanguage, s_localeLanguageChangedCallback);
+                        if (ret != SystemSettingsError.None)
+                        {
+                            throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        }
                     }
                 }
             }
@@ -1820,30 +1903,36 @@ namespace Tizen.System
         {
             add
             {
-                if (s_localeTimeFormat24HourChanged == null)
+                lock (LockObj)
                 {
-                    SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.LocaleTimeFormat24HourEnabled, s_localeTimeFormat24HourChangedCallback, IntPtr.Zero);
-                    if (ret != SystemSettingsError.None)
+                    if (s_localeTimeFormat24HourChanged == null)
                     {
-                        throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.LocaleTimeFormat24HourEnabled, s_localeTimeFormat24HourChangedCallback, IntPtr.Zero);
+                        if (ret != SystemSettingsError.None)
+                        {
+                            throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        }
                     }
+                    s_localeTimeFormat24HourChanged += value;
                 }
-                s_localeTimeFormat24HourChanged += value;
             }
 
             remove
             {
-                if (s_localeTimeFormat24HourChanged == null) {
-                    Tizen.Log.Info("Tizen.System.SystemSettings","There is no event handler");
-                    return;
-                }
-                s_localeTimeFormat24HourChanged -= value;
-                if (s_localeTimeFormat24HourChanged == null)
+                lock (LockObj)
                 {
-                    SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.LocaleTimeFormat24HourEnabled, s_localeTimeFormat24HourChangedCallback);
-                    if (ret != SystemSettingsError.None)
+                    if (s_localeTimeFormat24HourChanged == null) {
+                        Tizen.Log.Info("Tizen.System.SystemSettings","There is no event handler");
+                        return;
+                    }
+                    s_localeTimeFormat24HourChanged -= value;
+                    if (s_localeTimeFormat24HourChanged == null)
                     {
-                        throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.LocaleTimeFormat24HourEnabled, s_localeTimeFormat24HourChangedCallback);
+                        if (ret != SystemSettingsError.None)
+                        {
+                            throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        }
                     }
                 }
             }
@@ -1871,30 +1960,36 @@ namespace Tizen.System
         {
             add
             {
-                if (s_localeTimeZoneChanged == null)
+                lock (LockObj)
                 {
-                    SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.LocaleTimeZone, s_localeTimeZoneChangedCallback, IntPtr.Zero);
-                    if (ret != SystemSettingsError.None)
+                    if (s_localeTimeZoneChanged == null)
                     {
-                        throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.LocaleTimeZone, s_localeTimeZoneChangedCallback, IntPtr.Zero);
+                        if (ret != SystemSettingsError.None)
+                        {
+                            throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        }
                     }
+                    s_localeTimeZoneChanged += value;
                 }
-                s_localeTimeZoneChanged += value;
             }
 
             remove
             {
-                if (s_localeTimeZoneChanged == null) {
-                    Tizen.Log.Info("Tizen.System.SystemSettings","There is no event handler");
-                    return;
-                }
-                s_localeTimeZoneChanged -= value;
-                if (s_localeTimeZoneChanged == null)
+                lock (LockObj)
                 {
-                    SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.LocaleTimeZone, s_localeTimeZoneChangedCallback);
-                    if (ret != SystemSettingsError.None)
+                    if (s_localeTimeZoneChanged == null) {
+                        Tizen.Log.Info("Tizen.System.SystemSettings","There is no event handler");
+                        return;
+                    }
+                    s_localeTimeZoneChanged -= value;
+                    if (s_localeTimeZoneChanged == null)
                     {
-                        throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.LocaleTimeZone, s_localeTimeZoneChangedCallback);
+                        if (ret != SystemSettingsError.None)
+                        {
+                            throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        }
                     }
                 }
             }
@@ -1923,30 +2018,36 @@ namespace Tizen.System
         {
             add
             {
-                if (s_timeChanged == null)
+                lock (LockObj)
                 {
-                    SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.Time, s_timeChangedCallback, IntPtr.Zero);
-                    if (ret != SystemSettingsError.None)
+                    if (s_timeChanged == null)
                     {
-                        throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.Time, s_timeChangedCallback, IntPtr.Zero);
+                        if (ret != SystemSettingsError.None)
+                        {
+                            throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        }
                     }
+                    s_timeChanged += value;
                 }
-                s_timeChanged += value;
             }
 
             remove
             {
-                if (s_timeChanged == null) {
-                    Tizen.Log.Info("Tizen.System.SystemSettings","There is no event handler");
-                    return;
-                }
-                s_timeChanged -= value;
-                if (s_timeChanged == null)
+                lock (LockObj)
                 {
-                    SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.Time, s_timeChangedCallback);
-                    if (ret != SystemSettingsError.None)
+                    if (s_timeChanged == null) {
+                        Tizen.Log.Info("Tizen.System.SystemSettings","There is no event handler");
+                        return;
+                    }
+                    s_timeChanged -= value;
+                    if (s_timeChanged == null)
                     {
-                        throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.Time, s_timeChangedCallback);
+                        if (ret != SystemSettingsError.None)
+                        {
+                            throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        }
                     }
                 }
             }
@@ -1974,30 +2075,36 @@ namespace Tizen.System
         {
             add
             {
-                if (s_soundLockChanged == null)
+                lock (LockObj)
                 {
-                    SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.SoundLockEnabled, s_soundLockChangedCallback, IntPtr.Zero);
-                    if (ret != SystemSettingsError.None)
+                    if (s_soundLockChanged == null)
                     {
-                        throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.SoundLockEnabled, s_soundLockChangedCallback, IntPtr.Zero);
+                        if (ret != SystemSettingsError.None)
+                        {
+                            throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        }
                     }
+                    s_soundLockChanged += value;
                 }
-                s_soundLockChanged += value;
             }
 
             remove
             {
-                if (s_soundLockChanged == null) {
-                    Tizen.Log.Info("Tizen.System.SystemSettings","There is no event handler");
-                    return;
-                }
-                s_soundLockChanged -= value;
-                if (s_soundLockChanged == null)
+                lock (LockObj)
                 {
-                    SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.SoundLockEnabled, s_soundLockChangedCallback);
-                    if (ret != SystemSettingsError.None)
+                    if (s_soundLockChanged == null) {
+                        Tizen.Log.Info("Tizen.System.SystemSettings","There is no event handler");
+                        return;
+                    }
+                    s_soundLockChanged -= value;
+                    if (s_soundLockChanged == null)
                     {
-                        throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.SoundLockEnabled, s_soundLockChangedCallback);
+                        if (ret != SystemSettingsError.None)
+                        {
+                            throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        }
                     }
                 }
             }
@@ -2025,30 +2132,36 @@ namespace Tizen.System
         {
             add
             {
-                if (s_soundSilentModeChanged == null)
+                lock (LockObj)
                 {
-                    SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.SoundSilentModeEnabled, s_soundSilentModeChangedCallback, IntPtr.Zero);
-                    if (ret != SystemSettingsError.None)
+                    if (s_soundSilentModeChanged == null)
                     {
-                        throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.SoundSilentModeEnabled, s_soundSilentModeChangedCallback, IntPtr.Zero);
+                        if (ret != SystemSettingsError.None)
+                        {
+                            throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        }
                     }
+                    s_soundSilentModeChanged += value;
                 }
-                s_soundSilentModeChanged += value;
             }
 
             remove
             {
-                if (s_soundSilentModeChanged == null) {
-                    Tizen.Log.Info("Tizen.System.SystemSettings","There is no event handler");
-                    return;
-                }
-                s_soundSilentModeChanged -= value;
-                if (s_soundSilentModeChanged == null)
+                lock (LockObj)
                 {
-                    SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.SoundSilentModeEnabled, s_soundSilentModeChangedCallback);
-                    if (ret != SystemSettingsError.None)
+                    if (s_soundSilentModeChanged == null) {
+                        Tizen.Log.Info("Tizen.System.SystemSettings","There is no event handler");
+                        return;
+                    }
+                    s_soundSilentModeChanged -= value;
+                    if (s_soundSilentModeChanged == null)
                     {
-                        throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.SoundSilentModeEnabled, s_soundSilentModeChangedCallback);
+                        if (ret != SystemSettingsError.None)
+                        {
+                            throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        }
                     }
                 }
             }
@@ -2076,31 +2189,37 @@ namespace Tizen.System
         {
             add
             {
-                if (s_soundTouchChanged == null)
+                lock (LockObj)
                 {
-                    SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.SoundTouchEnabled, s_soundTouchChangedCallback, IntPtr.Zero);
-                    if (ret != SystemSettingsError.None)
+                    if (s_soundTouchChanged == null)
                     {
-                        throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.SoundTouchEnabled, s_soundTouchChangedCallback, IntPtr.Zero);
+                        if (ret != SystemSettingsError.None)
+                        {
+                            throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        }
                     }
+                    s_soundTouchChanged += value;
                 }
-                s_soundTouchChanged += value;
             }
 
             remove
             {
-                if (s_soundTouchChanged == null) {
-                    Tizen.Log.Info("Tizen.System.SystemSettings","There is no event handler");
-                    return;
-                }
-                s_soundTouchChanged -= value;
-                if (s_soundTouchChanged == null)
-
+                lock (LockObj)
                 {
-                    SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.SoundTouchEnabled, s_soundTouchChangedCallback);
-                    if (ret != SystemSettingsError.None)
+                    if (s_soundTouchChanged == null) {
+                        Tizen.Log.Info("Tizen.System.SystemSettings","There is no event handler");
+                        return;
+                    }
+                    s_soundTouchChanged -= value;
+                    if (s_soundTouchChanged == null)
+
                     {
-                        throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.SoundTouchEnabled, s_soundTouchChangedCallback);
+                        if (ret != SystemSettingsError.None)
+                        {
+                            throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        }
                     }
                 }
             }
@@ -2128,30 +2247,36 @@ namespace Tizen.System
         {
             add
             {
-                if (s_displayScreenRotationAutoChanged == null)
+                lock (LockObj)
                 {
-                    SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.DisplayScreenRotationAutoEnabled, s_displayScreenRotationAutoChangedCallback, IntPtr.Zero);
-                    if (ret != SystemSettingsError.None)
+                    if (s_displayScreenRotationAutoChanged == null)
                     {
-                        throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.DisplayScreenRotationAutoEnabled, s_displayScreenRotationAutoChangedCallback, IntPtr.Zero);
+                        if (ret != SystemSettingsError.None)
+                        {
+                            throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        }
                     }
+                    s_displayScreenRotationAutoChanged += value;
                 }
-                s_displayScreenRotationAutoChanged += value;
             }
 
             remove
             {
-                if (s_displayScreenRotationAutoChanged == null) {
-                    Tizen.Log.Info("Tizen.System.SystemSettings","There is no event handler");
-                    return;
-                }
-                s_displayScreenRotationAutoChanged -= value;
-                if (s_displayScreenRotationAutoChanged == null)
+                lock (LockObj)
                 {
-                    SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.DisplayScreenRotationAutoEnabled, s_displayScreenRotationAutoChangedCallback);
-                    if (ret != SystemSettingsError.None)
+                    if (s_displayScreenRotationAutoChanged == null) {
+                        Tizen.Log.Info("Tizen.System.SystemSettings","There is no event handler");
+                        return;
+                    }
+                    s_displayScreenRotationAutoChanged -= value;
+                    if (s_displayScreenRotationAutoChanged == null)
                     {
-                        throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.DisplayScreenRotationAutoEnabled, s_displayScreenRotationAutoChangedCallback);
+                        if (ret != SystemSettingsError.None)
+                        {
+                            throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        }
                     }
                 }
             }
@@ -2179,30 +2304,36 @@ namespace Tizen.System
         {
             add
             {
-                if (s_deviceNameChanged == null)
+                lock (LockObj)
                 {
-                    SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.DeviceName, s_deviceNameChangedCallback, IntPtr.Zero);
-                    if (ret != SystemSettingsError.None)
+                    if (s_deviceNameChanged == null)
                     {
-                        throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.DeviceName, s_deviceNameChangedCallback, IntPtr.Zero);
+                        if (ret != SystemSettingsError.None)
+                        {
+                            throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        }
                     }
+                    s_deviceNameChanged += value;
                 }
-                s_deviceNameChanged += value;
             }
 
             remove
             {
-                if (s_deviceNameChanged == null) {
-                    Tizen.Log.Info("Tizen.System.SystemSettings","There is no event handler");
-                    return;
-                }
-                s_deviceNameChanged -= value;
-                if (s_deviceNameChanged == null)
+                lock (LockObj)
                 {
-                    SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.DeviceName, s_deviceNameChangedCallback);
-                    if (ret != SystemSettingsError.None)
+                    if (s_deviceNameChanged == null) {
+                        Tizen.Log.Info("Tizen.System.SystemSettings","There is no event handler");
+                        return;
+                    }
+                    s_deviceNameChanged -= value;
+                    if (s_deviceNameChanged == null)
                     {
-                        throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.DeviceName, s_deviceNameChangedCallback);
+                        if (ret != SystemSettingsError.None)
+                        {
+                            throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        }
                     }
                 }
             }
@@ -2230,30 +2361,36 @@ namespace Tizen.System
         {
             add
             {
-                if (s_motionSettingChanged == null)
+                lock (LockObj)
                 {
-                    SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.MotionEnabled, s_motionSettingChangedCallback, IntPtr.Zero);
-                    if (ret != SystemSettingsError.None)
+                    if (s_motionSettingChanged == null)
                     {
-                        throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.MotionEnabled, s_motionSettingChangedCallback, IntPtr.Zero);
+                        if (ret != SystemSettingsError.None)
+                        {
+                            throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        }
                     }
+                    s_motionSettingChanged += value;
                 }
-                s_motionSettingChanged += value;
             }
 
             remove
             {
-                if (s_motionSettingChanged == null) {
-                    Tizen.Log.Info("Tizen.System.SystemSettings","There is no event handler");
-                    return;
-                }
-                s_motionSettingChanged -= value;
-                if (s_motionSettingChanged == null)
+                lock (LockObj)
                 {
-                    SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.MotionEnabled, s_motionSettingChangedCallback);
-                    if (ret != SystemSettingsError.None)
+                    if (s_motionSettingChanged == null) {
+                        Tizen.Log.Info("Tizen.System.SystemSettings","There is no event handler");
+                        return;
+                    }
+                    s_motionSettingChanged -= value;
+                    if (s_motionSettingChanged == null)
                     {
-                        throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.MotionEnabled, s_motionSettingChangedCallback);
+                        if (ret != SystemSettingsError.None)
+                        {
+                            throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        }
                     }
                 }
             }
@@ -2282,30 +2419,36 @@ namespace Tizen.System
         {
             add
             {
-                if (s_networkWifiNotificationChanged == null)
+                lock (LockObj)
                 {
-                    SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.NetworkWifiNotificationEnabled, s_networkWifiNotificationChangedCallback, IntPtr.Zero);
-                    if (ret != SystemSettingsError.None)
+                    if (s_networkWifiNotificationChanged == null)
                     {
-                        throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.NetworkWifiNotificationEnabled, s_networkWifiNotificationChangedCallback, IntPtr.Zero);
+                        if (ret != SystemSettingsError.None)
+                        {
+                            throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        }
                     }
+                    s_networkWifiNotificationChanged += value;
                 }
-                s_networkWifiNotificationChanged += value;
             }
 
             remove
             {
-                if (s_networkWifiNotificationChanged == null) {
-                    Tizen.Log.Info("Tizen.System.SystemSettings","There is no event handler");
-                    return;
-                }
-                s_networkWifiNotificationChanged -= value;
-                if (s_networkWifiNotificationChanged == null)
+                lock (LockObj)
                 {
-                    SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.NetworkWifiNotificationEnabled, s_networkWifiNotificationChangedCallback);
-                    if (ret != SystemSettingsError.None)
+                    if (s_networkWifiNotificationChanged == null) {
+                        Tizen.Log.Info("Tizen.System.SystemSettings","There is no event handler");
+                        return;
+                    }
+                    s_networkWifiNotificationChanged -= value;
+                    if (s_networkWifiNotificationChanged == null)
                     {
-                        throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.NetworkWifiNotificationEnabled, s_networkWifiNotificationChangedCallback);
+                        if (ret != SystemSettingsError.None)
+                        {
+                            throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        }
                     }
                 }
             }
@@ -2333,30 +2476,36 @@ namespace Tizen.System
         {
             add
             {
-                if (s_networkFlightModeChanged == null)
+                lock (LockObj)
                 {
-                    SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.NetworkFlightModeEnabled, s_networkFlightModeChangedCallback, IntPtr.Zero);
-                    if (ret != SystemSettingsError.None)
+                    if (s_networkFlightModeChanged == null)
                     {
-                        throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.NetworkFlightModeEnabled, s_networkFlightModeChangedCallback, IntPtr.Zero);
+                        if (ret != SystemSettingsError.None)
+                        {
+                            throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        }
                     }
+                    s_networkFlightModeChanged += value;
                 }
-                s_networkFlightModeChanged += value;
             }
 
             remove
             {
-                if (s_networkFlightModeChanged == null) {
-                    Tizen.Log.Info("Tizen.System.SystemSettings","There is no event handler");
-                    return;
-                }
-                s_networkFlightModeChanged -= value;
-                if (s_networkFlightModeChanged == null)
+                lock (LockObj)
                 {
-                    SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.NetworkFlightModeEnabled, s_networkFlightModeChangedCallback);
-                    if (ret != SystemSettingsError.None)
+                    if (s_networkFlightModeChanged == null) {
+                        Tizen.Log.Info("Tizen.System.SystemSettings","There is no event handler");
+                        return;
+                    }
+                    s_networkFlightModeChanged -= value;
+                    if (s_networkFlightModeChanged == null)
                     {
-                        throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.NetworkFlightModeEnabled, s_networkFlightModeChangedCallback);
+                        if (ret != SystemSettingsError.None)
+                        {
+                            throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        }
                     }
                 }
             }
@@ -2384,30 +2533,36 @@ namespace Tizen.System
         {
             add
             {
-                if (s_screenBacklightTimeChanged == null)
+                lock (LockObj)
                 {
-                    SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.ScreenBacklightTime, s_screenBacklightTimeChangedCallback, IntPtr.Zero);
-                    if (ret != SystemSettingsError.None)
+                    if (s_screenBacklightTimeChanged == null)
                     {
-                        throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.ScreenBacklightTime, s_screenBacklightTimeChangedCallback, IntPtr.Zero);
+                        if (ret != SystemSettingsError.None)
+                        {
+                            throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        }
                     }
+                    s_screenBacklightTimeChanged += value;
                 }
-                s_screenBacklightTimeChanged += value;
             }
 
             remove
             {
-                if (s_screenBacklightTimeChanged == null) {
-                    Tizen.Log.Info("Tizen.System.SystemSettings","There is no event handler");
-                    return;
-                }
-                s_screenBacklightTimeChanged -= value;
-                if (s_screenBacklightTimeChanged == null)
+                lock (LockObj)
                 {
-                    SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.ScreenBacklightTime, s_screenBacklightTimeChangedCallback);
-                    if (ret != SystemSettingsError.None)
+                    if (s_screenBacklightTimeChanged == null) {
+                        Tizen.Log.Info("Tizen.System.SystemSettings","There is no event handler");
+                        return;
+                    }
+                    s_screenBacklightTimeChanged -= value;
+                    if (s_screenBacklightTimeChanged == null)
                     {
-                        throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.ScreenBacklightTime, s_screenBacklightTimeChangedCallback);
+                        if (ret != SystemSettingsError.None)
+                        {
+                            throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        }
                     }
                 }
             }
@@ -2436,30 +2591,36 @@ namespace Tizen.System
         {
             add
             {
-                if (s_soundNotificationChanged == null)
+                lock (LockObj)
                 {
-                    SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.SoundNotification, s_soundNotificationChangedCallback, IntPtr.Zero);
-                    if (ret != SystemSettingsError.None)
+                    if (s_soundNotificationChanged == null)
                     {
-                        throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.SoundNotification, s_soundNotificationChangedCallback, IntPtr.Zero);
+                        if (ret != SystemSettingsError.None)
+                        {
+                            throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        }
                     }
+                    s_soundNotificationChanged += value;
                 }
-                s_soundNotificationChanged += value;
             }
 
             remove
             {
-                if (s_soundNotificationChanged == null) {
-                    Tizen.Log.Info("Tizen.System.SystemSettings","There is no event handler");
-                    return;
-                }
-                s_soundNotificationChanged -= value;
-                if (s_soundNotificationChanged == null)
+                lock (LockObj)
                 {
-                    SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.SoundNotification, s_soundNotificationChangedCallback);
-                    if (ret != SystemSettingsError.None)
+                    if (s_soundNotificationChanged == null) {
+                        Tizen.Log.Info("Tizen.System.SystemSettings","There is no event handler");
+                        return;
+                    }
+                    s_soundNotificationChanged -= value;
+                    if (s_soundNotificationChanged == null)
                     {
-                        throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.SoundNotification, s_soundNotificationChangedCallback);
+                        if (ret != SystemSettingsError.None)
+                        {
+                            throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        }
                     }
                 }
             }
@@ -2487,30 +2648,36 @@ namespace Tizen.System
         {
             add
             {
-                if (s_soundNotificationRepetitionPeriodChanged == null)
+                lock (LockObj)
                 {
-                    SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.SoundNotificationRepetitionPeriod, s_soundNotificationRepetitionPeriodChangedCallback, IntPtr.Zero);
-                    if (ret != SystemSettingsError.None)
+                    if (s_soundNotificationRepetitionPeriodChanged == null)
                     {
-                        throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.SoundNotificationRepetitionPeriod, s_soundNotificationRepetitionPeriodChangedCallback, IntPtr.Zero);
+                        if (ret != SystemSettingsError.None)
+                        {
+                            throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        }
                     }
+                    s_soundNotificationRepetitionPeriodChanged += value;
                 }
-                s_soundNotificationRepetitionPeriodChanged += value;
             }
 
             remove
             {
-                if (s_soundNotificationRepetitionPeriodChanged == null) {
-                    Tizen.Log.Info("Tizen.System.SystemSettings","There is no event handler");
-                    return;
-                }
-                s_soundNotificationRepetitionPeriodChanged -= value;
-                if (s_soundNotificationRepetitionPeriodChanged == null)
+                lock (LockObj)
                 {
-                    SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.SoundNotificationRepetitionPeriod, s_soundNotificationRepetitionPeriodChangedCallback);
-                    if (ret != SystemSettingsError.None)
+                    if (s_soundNotificationRepetitionPeriodChanged == null) {
+                        Tizen.Log.Info("Tizen.System.SystemSettings","There is no event handler");
+                        return;
+                    }
+                    s_soundNotificationRepetitionPeriodChanged -= value;
+                    if (s_soundNotificationRepetitionPeriodChanged == null)
                     {
-                        throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.SoundNotificationRepetitionPeriod, s_soundNotificationRepetitionPeriodChangedCallback);
+                        if (ret != SystemSettingsError.None)
+                        {
+                            throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        }
                     }
                 }
             }
@@ -2538,30 +2705,36 @@ namespace Tizen.System
         {
             add
             {
-                if (s_lockStateChanged == null)
+                lock (LockObj)
                 {
-                    SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.LockState, s_lockStateChangedCallback, IntPtr.Zero);
-                    if (ret != SystemSettingsError.None)
+                    if (s_lockStateChanged == null)
                     {
-                        throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.LockState, s_lockStateChangedCallback, IntPtr.Zero);
+                        if (ret != SystemSettingsError.None)
+                        {
+                            throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        }
                     }
+                    s_lockStateChanged += value;
                 }
-                s_lockStateChanged += value;
             }
 
             remove
             {
-                if (s_lockStateChanged == null) {
-                    Tizen.Log.Info("Tizen.System.SystemSettings","There is no event handler");
-                    return;
-                }
-                s_lockStateChanged -= value;
-                if (s_lockStateChanged == null)
+                lock (LockObj)
                 {
-                    SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.LockState, s_lockStateChangedCallback);
-                    if (ret != SystemSettingsError.None)
+                    if (s_lockStateChanged == null) {
+                        Tizen.Log.Info("Tizen.System.SystemSettings","There is no event handler");
+                        return;
+                    }
+                    s_lockStateChanged -= value;
+                    if (s_lockStateChanged == null)
                     {
-                        throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.LockState, s_lockStateChangedCallback);
+                        if (ret != SystemSettingsError.None)
+                        {
+                            throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        }
                     }
                 }
             }
@@ -2589,30 +2762,36 @@ namespace Tizen.System
         {
             add
             {
-                if (s_adsIdChanged == null)
+                lock (LockObj)
                 {
-                    SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.AdsId, s_adsIdChangedCallback, IntPtr.Zero);
-                    if (ret != SystemSettingsError.None)
+                    if (s_adsIdChanged == null)
                     {
-                        throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.AdsId, s_adsIdChangedCallback, IntPtr.Zero);
+                        if (ret != SystemSettingsError.None)
+                        {
+                            throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        }
                     }
+                    s_adsIdChanged += value;
                 }
-                s_adsIdChanged += value;
             }
 
             remove
             {
-                if (s_adsIdChanged == null) {
-                    Tizen.Log.Info("Tizen.System.SystemSettings","There is no event handler");
-                    return;
-                }
-                s_adsIdChanged -= value;
-                if (s_adsIdChanged == null)
+                lock (LockObj)
                 {
-                    SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.AdsId, s_adsIdChangedCallback);
-                    if (ret != SystemSettingsError.None)
+                    if (s_adsIdChanged == null) {
+                        Tizen.Log.Info("Tizen.System.SystemSettings","There is no event handler");
+                        return;
+                    }
+                    s_adsIdChanged -= value;
+                    if (s_adsIdChanged == null)
                     {
-                        throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.AdsId, s_adsIdChangedCallback);
+                        if (ret != SystemSettingsError.None)
+                        {
+                            throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        }
                     }
                 }
             }
@@ -2641,30 +2820,36 @@ namespace Tizen.System
         {
             add
             {
-                if (s_ultraDataSaveChanged == null)
+                lock (LockObj)
                 {
-                    SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.UltraDataSave, s_ultraDataSaveChangedCallback, IntPtr.Zero);
-                    if (ret != SystemSettingsError.None)
+                    if (s_ultraDataSaveChanged == null)
                     {
-                        throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.UltraDataSave, s_ultraDataSaveChangedCallback, IntPtr.Zero);
+                        if (ret != SystemSettingsError.None)
+                        {
+                            throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        }
                     }
+                    s_ultraDataSaveChanged += value;
                 }
-                s_ultraDataSaveChanged += value;
             }
 
             remove
             {
-                if (s_ultraDataSaveChanged == null) {
-                    Tizen.Log.Info("Tizen.System.SystemSettings","There is no event handler");
-                    return;
-                }
-                s_ultraDataSaveChanged -= value;
-                if (s_ultraDataSaveChanged == null)
+                lock (LockObj)
                 {
-                    SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.UltraDataSave, s_ultraDataSaveChangedCallback);
-                    if (ret != SystemSettingsError.None)
+                    if (s_ultraDataSaveChanged == null) {
+                        Tizen.Log.Info("Tizen.System.SystemSettings","There is no event handler");
+                        return;
+                    }
+                    s_ultraDataSaveChanged -= value;
+                    if (s_ultraDataSaveChanged == null)
                     {
-                        throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.UltraDataSave, s_ultraDataSaveChangedCallback);
+                        if (ret != SystemSettingsError.None)
+                        {
+                            throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        }
                     }
                 }
             }
@@ -2693,30 +2878,36 @@ namespace Tizen.System
         {
             add
             {
-                if (s_ultraDataSavePackageListChanged == null)
+                lock (LockObj)
                 {
-                    SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.UltraDataSavePackageList, s_ultraDataSavePackageListChangedCallback, IntPtr.Zero);
-                    if (ret != SystemSettingsError.None)
+                    if (s_ultraDataSavePackageListChanged == null)
                     {
-                        throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.UltraDataSavePackageList, s_ultraDataSavePackageListChangedCallback, IntPtr.Zero);
+                        if (ret != SystemSettingsError.None)
+                        {
+                            throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        }
                     }
+                    s_ultraDataSavePackageListChanged += value;
                 }
-                s_ultraDataSavePackageListChanged += value;
             }
 
             remove
             {
-                if (s_ultraDataSavePackageListChanged == null) {
-                    Tizen.Log.Info("Tizen.System.SystemSettings","There is no event handler");
-                    return;
-                }
-                s_ultraDataSavePackageListChanged -= value;
-                if (s_ultraDataSavePackageListChanged == null)
+                lock (LockObj)
                 {
-                    SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.UltraDataSavePackageList, s_ultraDataSavePackageListChangedCallback);
-                    if (ret != SystemSettingsError.None)
+                    if (s_ultraDataSavePackageListChanged == null) {
+                        Tizen.Log.Info("Tizen.System.SystemSettings","There is no event handler");
+                        return;
+                    }
+                    s_ultraDataSavePackageListChanged -= value;
+                    if (s_ultraDataSavePackageListChanged == null)
                     {
-                        throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.UltraDataSavePackageList, s_ultraDataSavePackageListChangedCallback);
+                        if (ret != SystemSettingsError.None)
+                        {
+                            throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        }
                     }
                 }
             }
@@ -2744,31 +2935,37 @@ namespace Tizen.System
         {
             add
             {
-                if (s_accessibilityTtsChanged == null)
+                lock (LockObj)
                 {
-                    SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.AccessibilityTtsEnabled, s_accessibilityTtsChangedCallback, IntPtr.Zero);
-                    if (ret != SystemSettingsError.None)
+                    if (s_accessibilityTtsChanged == null)
                     {
-                        throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.AccessibilityTtsEnabled, s_accessibilityTtsChangedCallback, IntPtr.Zero);
+                        if (ret != SystemSettingsError.None)
+                        {
+                            throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        }
                     }
+                    s_accessibilityTtsChanged += value;
                 }
-                s_accessibilityTtsChanged += value;
             }
 
             remove
             {
-                if (s_accessibilityTtsChanged == null) {
-                    Tizen.Log.Info("Tizen.System.SystemSettings","There is no event handler");
-                    return;
-                }
-                s_accessibilityTtsChanged -= value;
-                if (s_accessibilityTtsChanged == null)
-
+                lock (LockObj)
                 {
-                    SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.AccessibilityTtsEnabled, s_accessibilityTtsChangedCallback);
-                    if (ret != SystemSettingsError.None)
+                    if (s_accessibilityTtsChanged == null) {
+                        Tizen.Log.Info("Tizen.System.SystemSettings","There is no event handler");
+                        return;
+                    }
+                    s_accessibilityTtsChanged -= value;
+                    if (s_accessibilityTtsChanged == null)
+
                     {
-                        throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.AccessibilityTtsEnabled, s_accessibilityTtsChangedCallback);
+                        if (ret != SystemSettingsError.None)
+                        {
+                            throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        }
                     }
                 }
             }
@@ -2796,26 +2993,32 @@ namespace Tizen.System
         {
             add
             {
-                if (s_vibrationChanged == null)
+                lock (LockObj)
                 {
-                    SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.Vibration, s_vibrationChangedCallback, IntPtr.Zero);
-                    if (ret != SystemSettingsError.None)
+                    if (s_vibrationChanged == null)
                     {
-                        throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.Vibration, s_vibrationChangedCallback, IntPtr.Zero);
+                        if (ret != SystemSettingsError.None)
+                        {
+                            throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        }
                     }
+                    s_vibrationChanged += value;
                 }
-                s_vibrationChanged += value;
             }
 
             remove
             {
-                s_vibrationChanged -= value;
-                if (s_vibrationChanged == null)
+                lock (LockObj)
                 {
-                    SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.Vibration, s_vibrationChangedCallback);
-                    if (ret != SystemSettingsError.None)
+                    s_vibrationChanged -= value;
+                    if (s_vibrationChanged == null)
                     {
-                        throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.Vibration, s_vibrationChangedCallback);
+                        if (ret != SystemSettingsError.None)
+                        {
+                            throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        }
                     }
                 }
             }
@@ -2843,26 +3046,32 @@ namespace Tizen.System
         {
             add
             {
-                if (s_automaticTimeUpdateChanged == null)
+                lock (LockObj)
                 {
-                    SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.AutomaticTimeUpdate, s_automaticTimeUpdateChangedCallback, IntPtr.Zero);
-                    if (ret != SystemSettingsError.None)
+                    if (s_automaticTimeUpdateChanged == null)
                     {
-                        throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.AutomaticTimeUpdate, s_automaticTimeUpdateChangedCallback, IntPtr.Zero);
+                        if (ret != SystemSettingsError.None)
+                        {
+                            throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        }
                     }
+                    s_automaticTimeUpdateChanged += value;
                 }
-                s_automaticTimeUpdateChanged += value;
             }
 
             remove
             {
-                s_automaticTimeUpdateChanged -= value;
-                if (s_automaticTimeUpdateChanged == null)
+                lock (LockObj)
                 {
-                    SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.AutomaticTimeUpdate, s_automaticTimeUpdateChangedCallback);
-                    if (ret != SystemSettingsError.None)
+                    s_automaticTimeUpdateChanged -= value;
+                    if (s_automaticTimeUpdateChanged == null)
                     {
-                        throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.AutomaticTimeUpdate, s_automaticTimeUpdateChangedCallback);
+                        if (ret != SystemSettingsError.None)
+                        {
+                            throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        }
                     }
                 }
             }
@@ -2890,26 +3099,32 @@ namespace Tizen.System
         {
             add
             {
-                if (s_developerOptionStateChanged == null)
+                lock (LockObj)
                 {
-                    SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.DeveloperOptionState, s_developerOptionStateChangedCallback, IntPtr.Zero);
-                    if (ret != SystemSettingsError.None)
+                    if (s_developerOptionStateChanged == null)
                     {
-                        throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.DeveloperOptionState, s_developerOptionStateChangedCallback, IntPtr.Zero);
+                        if (ret != SystemSettingsError.None)
+                        {
+                            throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        }
                     }
+                    s_developerOptionStateChanged += value;
                 }
-                s_developerOptionStateChanged += value;
             }
 
             remove
             {
-                s_developerOptionStateChanged -= value;
-                if (s_developerOptionStateChanged == null)
+                lock (LockObj)
                 {
-                    SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.DeveloperOptionState, s_developerOptionStateChangedCallback);
-                    if (ret != SystemSettingsError.None)
+                    s_developerOptionStateChanged -= value;
+                    if (s_developerOptionStateChanged == null)
                     {
-                        throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.DeveloperOptionState, s_developerOptionStateChangedCallback);
+                        if (ret != SystemSettingsError.None)
+                        {
+                            throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        }
                     }
                 }
             }
@@ -2938,26 +3153,32 @@ namespace Tizen.System
         {
             add
             {
-                if (s_accessibilityGrayscaleChanged == null)
+                lock (LockObj)
                 {
-                    SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.AccessibilityGrayscale, s_accessibilityGrayscaleChangedCallback, IntPtr.Zero);
-                    if (ret != SystemSettingsError.None)
+                    if (s_accessibilityGrayscaleChanged == null)
                     {
-                        throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.AccessibilityGrayscale, s_accessibilityGrayscaleChangedCallback, IntPtr.Zero);
+                        if (ret != SystemSettingsError.None)
+                        {
+                            throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        }
                     }
+                    s_accessibilityGrayscaleChanged += value;
                 }
-                s_accessibilityGrayscaleChanged += value;
             }
 
             remove
             {
-                s_accessibilityGrayscaleChanged -= value;
-                if (s_accessibilityGrayscaleChanged == null)
+                lock (LockObj)
                 {
-                    SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.AccessibilityGrayscale, s_accessibilityGrayscaleChangedCallback);
-                    if (ret != SystemSettingsError.None)
+                    s_accessibilityGrayscaleChanged -= value;
+                    if (s_accessibilityGrayscaleChanged == null)
                     {
-                        throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.AccessibilityGrayscale, s_accessibilityGrayscaleChangedCallback);
+                        if (ret != SystemSettingsError.None)
+                        {
+                            throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        }
                     }
                 }
             }
@@ -2986,26 +3207,32 @@ namespace Tizen.System
         {
             add
             {
-                if (s_accessibilityNegativeColorChanged == null)
+                lock (LockObj)
                 {
-                    SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.AccessibilityNegativeColor, s_accessibilityNegativeColorChangedCallback, IntPtr.Zero);
-                    if (ret != SystemSettingsError.None)
+                    if (s_accessibilityNegativeColorChanged == null)
                     {
-                        throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.AccessibilityNegativeColor, s_accessibilityNegativeColorChangedCallback, IntPtr.Zero);
+                        if (ret != SystemSettingsError.None)
+                        {
+                            throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        }
                     }
+                    s_accessibilityNegativeColorChanged += value;
                 }
-                s_accessibilityNegativeColorChanged += value;
             }
 
             remove
             {
-                s_accessibilityNegativeColorChanged -= value;
-                if (s_accessibilityNegativeColorChanged == null)
+                lock (LockObj)
                 {
-                    SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.AccessibilityNegativeColor, s_accessibilityNegativeColorChangedCallback);
-                    if (ret != SystemSettingsError.None)
+                    s_accessibilityNegativeColorChanged -= value;
+                    if (s_accessibilityNegativeColorChanged == null)
                     {
-                        throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.AccessibilityNegativeColor, s_accessibilityNegativeColorChangedCallback);
+                        if (ret != SystemSettingsError.None)
+                        {
+                            throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        }
                     }
                 }
             }
@@ -3035,26 +3262,32 @@ namespace Tizen.System
         {
             add
             {
-                if (s_rotaryEventEnabledChanged == null)
+                lock (LockObj)
                 {
-                    SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.RotaryEventEnabled, s_rotaryEventEnabledChangedCallback, IntPtr.Zero);
-                    if (ret != SystemSettingsError.None)
+                    if (s_rotaryEventEnabledChanged == null)
                     {
-                        throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsSetCallback(SystemSettingsKeys.RotaryEventEnabled, s_rotaryEventEnabledChangedCallback, IntPtr.Zero);
+                        if (ret != SystemSettingsError.None)
+                        {
+                            throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        }
                     }
+                    s_rotaryEventEnabledChanged += value;
                 }
-                s_rotaryEventEnabledChanged += value;
             }
 
             remove
             {
-                s_rotaryEventEnabledChanged -= value;
-                if (s_rotaryEventEnabledChanged == null)
+                lock (LockObj)
                 {
-                    SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.RotaryEventEnabled, s_rotaryEventEnabledChangedCallback);
-                    if (ret != SystemSettingsError.None)
+                    s_rotaryEventEnabledChanged -= value;
+                    if (s_rotaryEventEnabledChanged == null)
                     {
-                        throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        SystemSettingsError ret = (SystemSettingsError)Interop.Settings.SystemSettingsRemoveCallback(SystemSettingsKeys.RotaryEventEnabled, s_rotaryEventEnabledChangedCallback);
+                        if (ret != SystemSettingsError.None)
+                        {
+                            throw SystemSettingsExceptionFactory.CreateException(ret, "Error in callback handling");
+                        }
                     }
                 }
             }