私はあなたのpropertyClassの中で最終的にStackOverflow例外(propertyClass内のpropertyClassのインスタンスであるproSave.okuを参照する)を引き起こすループを引き起こしていると思います。あなたのpropertyClassでこの参照を削除すると、あなたの問題を修正 - それはあるとしてあなたのコードの残りの部分を残すことができ:
[Serializable]
public class propertyClass
{
[Description("Server Bağlantı Adı"), Category("Server Setting")]
public string serverName { get; set; }
[Description("Server Bağlantısı Dosya Adı"), Category("Server Setting")]
public string databaseName { get; set; }
[Description("Server Bağlantısı kullanıcı adı"), Category("Server Setting")]
public string user { get; set; }
[Description("Server Bağlantısı kullanıcı şifresi"), Category("Server Setting")]
public string password { get; set; }
[Description("Grid Hücre Yükseklik Ayarı \nFormlar Yenilendiğinde etkinleştirilecektir."), Category("Grid Ayarları")]
public int gridHeight { get; set; }
}
XMLファイルを毎回読ん防ぐために、実装を拡張したい場合は、さらにあなたを修正することができます「キャッシュ」にProSaveのクラスの設定、例えば:SaveSettings()メソッドに戻って設定を書き込む際に、ファイルがロックされていた場合
public static class proSave
{
private static propertyClass settings;
private const string SettingsFilePath = "C:\\settings.xml";
public static propertyClass oku
{
get
{
if (settings == null)
{
settings = GetSettings();
return settings;
}
return settings;
}
}
public static void SaveSettings(propertyClass settings)
{
XmlSerializer writer = new XmlSerializer(typeof(propertyClass));
using (FileStream file = File.Create(SettingsFilePath))
{
writer.Serialize(file, settings);
}
}
private static propertyClass GetSettings()
{
XmlSerializer serialize = new XmlSerializer(typeof(propertyClass));
using (var stream = new StreamReader(SettingsFilePath))
{
return (propertyClass)serialize.Deserialize(stream);
}
}
}
あなたはIOExceptionsを処理する必要があります。
組み込みのConfigurationManagerを使用するか、カスタムConfigurationSectionを実装するなど、代替案を検討することもできます。お役に立てれば。
エラーは何ですか? – leppie
エラーの詳細とsettings.xmlファイルの内容を教えてください。 – abrown