Hallo,
ich denke der erste Schritt heist erst einmal Callback-Funktion. Hier findest du ein kleines Beispiel:
www.delphi-forum.de/viewtopic.php?p=386566
Vom Prinziep läuft es so, du übergibst deiner DLL "zur Initialisierung" die Adresse der Funktion aus deinem Programm, welche bei dem Event ausgelöst werden soll. In deiner DLL schreibst du einen Eventhandler und vernüpfst ihn mit dem entsprechenden Ereigniss. Dieser macht dann nichts anderes als die Funktion, welche an der ihr bekannten Adresse liegt auf zu rufen.
Wie dass dann aus C# funktioniert ist eine Frage für das C#-Forum

.
Gruß
Klabautermann