利用App.Config保存系统工作参数

在App.Config中添加如下的节

 <connectionStrings>
    <add name="alarmEntities" connectionString="metadata=res://*/Model.csdl|res://*/Model.ssdl|res://*/Model.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=DBC-20110831PAC;Initial Catalog=alarm;Integrated Security=True;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />
  </connectionStrings>
  <appSettings>
    <clear />
    <add key="SerialPortName" value="COM1" />
    <add key="Interval" value="1000" />
    <add key="AutoRun" value="false" />
  </appSettings>

在AppConfig.cs中读写参数

 public sealed class AppConfig
        {
                #region PrivateMethod


                // 读取appStrings配置节 
                ///<summary>
                ///返回*.exe.config文件中appSettings配置节的value项
                ///</summary> 
                ///<param name="strKey"></param> 
                ///<returns></returns> 
                private static string GetAppConfig(string strKey)
                {
                        foreach (string key in ConfigurationManager.AppSettings)
                        {
                                if (key == strKey)
                                {
                                        return ConfigurationManager.AppSettings[strKey];
                                }
                        }
                        return null;
                }


                // 更新connectionStrings配置节 
                ///<summary> 
                ///在*.exe.config文件中appSettings配置节增加一对键、值对 
                ///</summary> 
                ///<param name="newKey"></param> ///<param name="newValue"></param> 
                private static void UpdateAppConfig(string newKey, string newValue)
                {
                        bool isModified = false;
                        foreach (string key in ConfigurationManager.AppSettings)
                        {
                                if (key == newKey)
                                {
                                        isModified = true;
                                }
                        }
                        // Open App.Config of executable     
                        Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
                        // You need to remove the old settings object before you can replace it    
                        if (isModified)
                        {
                                config.AppSettings.Settings.Remove(newKey);
                        }
                        // Add an Application Setting. 
                        config.AppSettings.Settings.Add(newKey, newValue);        // Save the changes in App.config file. 
                        config.Save(ConfigurationSaveMode.Modified);     // Force a reload of a changed section. 
                        ConfigurationManager.RefreshSection("appSettings");
                }


                #endregion


                #region PublicMethod


                ///<summary> ///依据连接串名字connectionName返回数据连接字符串 ///</summary> 
                ///<param name="connectionName"></param> ///<returns></returns> 
                private static string GetConnectionStringsConfig(string connectionName)
                {
                        string connectionString = ConfigurationManager.ConnectionStrings[connectionName].ConnectionString.ToString();
                        Console.WriteLine(connectionString); return connectionString;
                }


                ///<summary> ///更新连接字符串 ///</summary> 
                ///<param name="newName">连接字符串名称</param> 
                ///<param name="newConString">连接字符串内容</param> 
                ///<param name="newProviderName">数据提供程序名称</param>
                private static void UpdateConnectionStringsConfig(string newName, string newConString)
                {
                        bool isModified = false;    //记录该连接串是否已经存在     //如果要更改的连接串已经存在 
                        if (ConfigurationManager.ConnectionStrings[newName] != null)
                        {
                                isModified = true;
                        }
                        //新建一个连接字符串实例 
                        ConnectionStringSettings mySettings = new ConnectionStringSettings(newName, newConString);
                        // 打开可执行的配置文件*.exe.config     
                        Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
                        // 如果连接串已存在,首先删除它   
                        if (isModified)
                        {
                                config.ConnectionStrings.ConnectionStrings.Remove(newName);
                        }
                        // 将新的连接串添加到配置文件中. 
                        config.ConnectionStrings.ConnectionStrings.Add(mySettings);
                        // 保存对配置文件所作的更改 
                        config.Save(ConfigurationSaveMode.Modified);
                        // 强制重新载入配置文件的ConnectionStrings配置节 
                        ConfigurationManager.RefreshSection("ConnectionStrings");
                }


                public static String GetSerialport()
                {
                        String SerialPortName = AppConfig.GetAppConfig("SerialPortName");
                        try
                        {
                                if (!SerialPortName.Substring(0, 3).Equals("COM")) throw new Exception();
                                if (Int32.Parse(SerialPortName.Substring(3)) < 1) throw new Exception();
                        }
                        catch
                        {
                                SerialPortName = "COM1";
                                AppConfig.UpdateAppConfig("SerialPortName", "COM1");
                        }
                        LogHelper.WriteInfo(String.Format("成功读取通信串口参数设置,其值为: {0}。", SerialPortName));
                        return SerialPortName;
                }


                public static void SetSerialport(String SerialPortName)
                {
                        AppConfig.UpdateAppConfig("SerialPortName", SerialPortName);
                        LogHelper.WriteInfo(String.Format("成功写入通信串口参数设置,其值为: {0}。", SerialPortName));
                }


                public static Int32 GetInterval()
                {
                        String strInterval = AppConfig.GetAppConfig("Interval");
                        Int32 Interval;
                        try { Interval = Int32.Parse(strInterval); }
                        catch
                        {
                                Interval = 24;
                                AppConfig.UpdateAppConfig("Interval", "24");
                        }
                        LogHelper.WriteInfo(String.Format("成功读取间隔时间,其值为: {0}毫秒。", Interval));
                        return Interval;
                }


                public static void SetInterval(Int32 Interval)
                {
                        AppConfig.UpdateAppConfig("Interval", Interval.ToString());
                        LogHelper.WriteInfo(String.Format("成功写入间隔时间,其值为: {0}毫秒。", Interval));
                }


                public static Boolean GetAutoRun()
                {
                        String strAutoRun = AppConfig.GetAppConfig("AutoRun");
                        Boolean AutoRun=true;
                        try { AutoRun = Boolean.Parse(strAutoRun); }
                        catch
                        {
                                strAutoRun = "true";
                                AppConfig.UpdateAppConfig("AutoRun", "true");
                        }
                        LogHelper.WriteInfo(String.Format("成功读取自动启动设置,其值为: {0}。", strAutoRun));
                        return AutoRun;
                }


                public static void SetAutoRun(Boolean AutoRun)
                {
                        AppConfig.UpdateAppConfig("AutoRun", AutoRun.ToString());
                        LogHelper.WriteInfo(String.Format("成功写入自动启动设置,其值为: {0}。", AutoRun));
                }


                #endregion
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值