silentcatcher
Mitglied
Als erstens: Ich habe eine statische Konfigurationsklasse welche Einstellungen speichert oder schreibt. Auf diese Klasse greifen insgesamt etwa 3 Klassen zu und holen sich die Einstellungen bei Programmstart. Nun zum eigentlichen Problem.
Der User hat ja die Möglichkeit Einstellungen auch während der Laufzeit zu ändern, das bedeutet aber, dass wenn diese Änderungen erfolgt sind, die anderen Klassen davon etwas mitbekommen müssen, kein Problem dachte ich mir nach dieser Erklärung auf http://msdn.microsoft.com/de-de/library/w369ty8x(VS.80).aspx
Ich habe also oben meiner Konfigurationsklasse noch eine 2te reingepackt(ein eigenes file schin mier übertrieben), welche wie folgt aussieht.
Meinem ConfigurationReader habe ich folgendermassen erweitert (nur durch meinen Versuch hinzugefügtes, ist in dieser Klasse ersichtlich):
Und bei allen Klassen die den ConfigurationReader benutzen abonniere ich folgendermassen das Event, welches mitteilt, dass die Konfigurationen neu geschrieben wurden.
Nur funktioniert das nun nicht so wie ich wollte, die readConfig Methode wird gar nicht aufgerufen. Ich denke dass es damit zu tun hat, dass es sich bei mir um eine statische Klasse handelt, aber ich finde den Fehler trozdem nicht.
Grüsse
Der User hat ja die Möglichkeit Einstellungen auch während der Laufzeit zu ändern, das bedeutet aber, dass wenn diese Änderungen erfolgt sind, die anderen Klassen davon etwas mitbekommen müssen, kein Problem dachte ich mir nach dieser Erklärung auf http://msdn.microsoft.com/de-de/library/w369ty8x(VS.80).aspx
Ich habe also oben meiner Konfigurationsklasse noch eine 2te reingepackt(ein eigenes file schin mier übertrieben), welche wie folgt aussieht.
Code:
public class CustomEventArgs : EventArgs
{
public CustomEventArgs(string s)
{
message = s;
}
private string message;
public string Message
{
get { return message; }
set { message = value; }
}
}
Meinem ConfigurationReader habe ich folgendermassen erweitert (nur durch meinen Versuch hinzugefügtes, ist in dieser Klasse ersichtlich):
Code:
class ConfigurationReader
{
public event EventHandler<CustomEventArgs> RaiseCustomEvent;
protected virtual void OnRaiseCustomEvent(CustomEventArgs e)
{
// Make a temporary copy of the event to avoid possibility of
// a race condition if the last subscriber unsubscribes
// immediately after the null check and before the event is raised.
EventHandler<CustomEventArgs> handler = RaiseCustomEvent;
// Event will be null if there are no subscribers
if (handler != null)
{
// Format the string to send inside the CustomEventArgs parameter
e.Message += String.Format(" at {0}", DateTime.Now.ToString());
// Use the () operator to raise the event.
handler(this, e);
}
}
public void reload()
{
OnRaiseCustomEvent(new CustomEventArgs("Did something"));
}
}
}
Und bei allen Klassen die den ConfigurationReader benutzen abonniere ich folgendermassen das Event, welches mitteilt, dass die Konfigurationen neu geschrieben wurden.
Code:
configReader = ConfigurationReader.GetInstance();
configReader.RaiseCustomEvent += new EventHandler<CustomEventArgs>(readConfig);
Nur funktioniert das nun nicht so wie ich wollte, die readConfig Methode wird gar nicht aufgerufen. Ich denke dass es damit zu tun hat, dass es sich bei mir um eine statische Klasse handelt, aber ich finde den Fehler trozdem nicht.
Grüsse