Physik ist eine spannende Sache. Zum Beispiel die Frage was passiert wenn man heißes Nickel in eine Schale Wasser legt? Das kann nun zum Glück beantwortet werden:
Video-Link: https://www.youtube.com/watch?v=9qSEfcIfYbw
Physik ist eine spannende Sache. Zum Beispiel die Frage was passiert wenn man heißes Nickel in eine Schale Wasser legt? Das kann nun zum Glück beantwortet werden:
Events unter C# sind so eine Sache. Im Normalfall funktionieren sie ohne Probleme. Spannend wird das ganze wenn man Events in einer Anwendung zwischen verschiedenen Threads verschicken möchte. Dabei kann es nämlich passieren das Events verloren gehen weil sie nicht empfangen werden. Abhilfe schafft hier die Klasse „ThreadSafeEvent“:
public class ThreadSafeEvent
{
EventHandler internalEventHandler;
readonly object internalEventHandlerLock=new object();
public event EventHandler Event
{
add
{
lock(internalEventHandlerLock)
{
internalEventHandler+=value;
}
}
remove
{
lock(internalEventHandlerLock)
{
internalEventHandler-=value;
}
}
}
public virtual void Fire(object sender, EventArgs e)
{
EventHandler handler;
lock(internalEventHandlerLock)
{
handler=internalEventHandler;
}
if(handler!=null)
{
handler(sender, e);
}
}
}
Möchte man nun z.B. der Klasse „Entries“ eine solches Event hinzufügen, so sieht das ganze wie folgt aus:
public ThreadSafeEvent EntrySelected=new ThreadSafeEvent();
Nun kann das Event gefeuert werden, das ganze wird mittels der „Fire“ Methode bewerkstelligt. Dieser übergibt man den Sender und zusätzliche Argumente in Form eines „EventArgs“ bzw. einer davon abgeleiteten Klasse.
EntrySelected.Fire(this, new EntryEventArgs(entry));
Jede Klasse welche das Event nun empfangen möchte hängt sich an das entsprechende Event.
Entries entries=new Entries();
Entries.EntrySelected.Event+=OnEntrySelected;
...
private void OnEntrySelected(object sender, EventArgs e)
{
EntryEventArgs args=(EntryEventArgs)e;
Console.WriteLine(args.Entry);
}
Und schon haben wir in unserer Anwendung ein sauberes und threadsicheres Eventsystem.
Menschliche Bands sind ja einige tausend Jahre nach Erfindung der Musik auch irgendwie öde. Zum Glück gibt es ja seid 2007 die Band Compressorhead. Egal was diese Band spielt es ist immer „Metal“-Musik.
Das liegt sicherlich daran, das es sich bei den Musikern um Roboter handelt. Wobei mich das ganze etwas an Skynet und Terminator erinnert ;) Die offizielle Seite der Band ist unter http://compressorheadband.com/ zu finden.
Es gibt wenige Bücher bei denen ich anfange sabbernd eben diese zu bestellen. Aber bei allen Büchern von Gameplan ist genau dies der Fall. Das fängt bei dem Buch „Spielkonsolen und Heim-Computer 1972 bis 2009“ an, geht über das Buch „Joysticks“ und endet irgendwo bei „Volkscomputer“. Die Preise liegen dabei um die 30 €. Verantwortlich für die Bücher ist dabei Winnie Forster, ein bekannter deutscher Computerspieljournalist. Zu finden sind die ganzen Bücher unter http://www.gameplan.de. Dort gibt es auch die entsprechenden Bestellmöglichkeiten.
Weitere Informationen gibt es unter:
http://de.wikipedia.org/wiki/Winnie_Forster
Internes Apple Video anlässlich des Releases von Windows 95: