möchte meine GUI in einen Exe-Projekt implementieren. Die Logik befindet sich in der selben Solution, allerdings in einen Dll-Projekt. Nun möchte ich Events in beide Richtungen senden können.
Z.B.
Dll ließt Daten von einen Port, wurden die Daten verifiziert, sollen diese Daten der Exe (GUI) gesendet werden.
In der GUI kann durch Eingabe eines Datums das senden über die Dll ausgelöst werden. Dazu soll das Datum der Dll gesendet werden.
Nun ist es doch so, das ich in meiner Solution die Projekte gegenseitig referenzieren müsste, was ja aber nicht möglich ist (Henne - Ei Problem).
Wie geht man hier vor?
Beispiel im Code:
Dll:
Event auslösen: Instance.receivedData(1)
public delegate void ReceivedData(int function);
public event ReceivedData receivedData;
Exe:
Dll.Instance.receivedData += new Dll.ReceivedData(Received);
Diese funktioniert, wenn ich die Dll als Referenz im Exe-Projekt angeben. Nur wie bekomme ich dann den umgekehrten Weg hin?
Bitte um Hilfe!
Super, danke allen die mir nur einen Clou geben können,
Deine .exe sollte die .dll (Bibliothek) kennen aber nicht umgekehrt.
Da Du ja vermutlich Objekte aus der .dll innerhalb der .exe erzeugst, kannst Du ja da über public Member oder ein Interface (was ja wieder auf public Member hinausläuft) die erforderlichen Werte direkt setzen.
Gruß, MarsStein
Edit: Die Richtung von der Dll zur exe läuft natürlich weiter über events.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von MarsStein am .
Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca
Die DLL ist wie der Name schon sagt eine "Dynamic Link Library" kann also von überall Dynamisch gelinkt werden und sollte keine Kenntnisse darüber haben von wem sie gelinkt wird.
Daher kann sie sehr wohl events werfen wie du ja auch schon machst. Jedoch widerspricht es dem Sinn einer dll events zu abonnieren. Es ist eine "library" die genutzt werden will.
Also Kommunikation Exe -> dll = Funktionsaufrufe
Und dll -> Exe = events
Was spricht gegen dieses Vorgehen. Eventuell solltest du Code aus der dll in die exe schieben um dem Sinn einer dll gerecht zu werden.
würde gerne ähnliches machen: Die DLL soll über ein Event die EXE benachrichtigen. Hast du vielleicht hierzu einen Codeschnippsel für mich. Ich such mich hier schon seit Stunden dumm und dämlich und find dazu einfach nirgends ein Beispiel.
mit DLL und EXE hat das erstmal nichts zu tun. Wie man ein Event definiert, steht in de FAQ: [FAQ] Eigenen Event definieren. Danach muss man also sicher nicht stundenlang suchen.