Zum Inhalt springen

MaceFan

Mitglieder
  • Gesamte Inhalte

    4
  • Benutzer seit

  • Letzter Besuch

Letzte Besucher des Profils

Der "Letzte Profil-Besucher"-Block ist deaktiviert und wird anderen Benutzern nicht angezeit.

  1. Ich mag die, ebenso wie delagate's, (eigentlich) auch nicht - ist mir zuviel "Zauberei" im Spiel. 's war zum testen halt... sie waren ploetzlich da... es fuehlte sich so toll an. K.A. wie ich mich dazu hab hinreissen koennen o) Ich finde den Ansatz von Dir aber auch recht interessant. Habe alternativ an sowas gedacht: class Bescheidsager { public Ausfuehrer ausfuehrer; public void FuehreAus() { Console.WriteLine("Ueberpruefung auf vorhandene Referenz auf <<<Ausfuehrer>>> wird gestartet..."); if (ausfuehrer != null) { Console.WriteLine("Ueberpruefung erfolgreich. Starte Methode auf <<<Ausfuehrer>>>."); ausfuehrer.IchWerdeAusgefuehrt(); } else { Console.WriteLine("Ueberpruefung negativ. Es wird keine Methode ausgefuehrt."); } } } class Ausfuehrer { public void IchWerdeAusgefuehrt() { Console.WriteLine("<<<IchWerdeAusgefuehrt>>> in <<<Ausfuehrer>> wird von <<<Bescheidsager>>> zur Ausfuehrung gebracht."); } } static void Main(string[] args) { Console.Clear(); Console.WriteLine("Hello World!"); Bescheidsager bescheidsager = new Bescheidsager(); bescheidsager.ausfuehrer = new Ausfuehrer(); bescheidsager.FuehreAus(); Console.ReadKey(); } <Ausfuehrer> dabei als Array oder Liste verwaltet... 's erscheint mir einfacher nutzbar zu sein als mein jetziges Vorgehen. Ich werd, so die Arbeitslast es zulaesst, mal drueber nachdenken und rumfummeln. uebschen tag wuensch ich mf
  2. ...wie der Titel schon beschreibt: Ich finde sie nicht wieder. Habe sie gestern abends / heute morgens erstellt/geschrieben. Gab sogar eine Antwort auf ein von mir gepostetes "Problem"... Laut der Uebersicht in meinem "Profil" habe ich derzeit drei Inhalte, angezeigt wird aber nur einer. Wo sind die anderen beiden...? huebschen Abend wuensch ich mf
  3. Es ist "uninteressant" woher ich weiss welches ich entfernen moechte, ich weiss es eben. Was ist "verquirlt"? Denk Dir einfach das auskommentierte weg - dann wird's klarer Ja, es hat seinen Grund dass sie wieder entfernt werden sollen (die Methoden) - sie wurden ausgefuehrt. Und wenn ich ein IF-Construckt analog Deinem verwende... und irgendwann eine (bestimmte) registrierte Methode wieder loswerden will (von der ich nicht weiss an welcher Stelle in der InvocationList diese steht), dann passiert das genau wie? Ich sehe hier denselben Schuh, nur in anderer Farbe. Ich haett da schon eine gewisse Vorstellung, wie ich mir 'ne "delegate-Klasse" zusammen bastel die meine Wuensche erfuellt. Nur, warum das Problem neu erfinden, wenn ich es denn mit vorhandenen Mitteln erschlagen kann?
  4. Ich bin in die Fachbuch-Abteilung der Buchhandlung meines Vertrauens gegangen. Habe dort von einigen Buechern den Buchruecken gelesen. Bei dem Einen oder Anderen die ersten zwei, drei Seiten gelesen um zu gucken ob es sprachlich "zu mir passt". Und dann eine Wahl getroffen. Ich persoenlich halte von online-Lehrkursen oder Videos nicht viel, schon gar nicht fuer "Anfaenger" - meine Meinung. Buch, Zettel und 'n Bleistift. Da kannste dir dann (DIREKT) Anmerkungen ins Buch schreiben, vollgeschmierte Zettel reinheften... und so mancher Pizza-Fett-Fleck wird von muehvollen Stunden voller Qual zeugen... <lach>
  5. 'nabend die Gemeinde. using System; namespace EinEinfacherDelegateBool_v001 { class Program { class Caller { public delegate bool OnAction(); // public delegate bool RefOnAction(ref TypeOneWorker typeOneWorker); public OnAction DoAction; // public RefOnAction refDoAction; public bool CallDoAction() { if (this.DoAction != null) { return this.DoAction(); } return false; } //public bool refCallDoAction() //{ // if (this.refDoAction != null) // { // return this.refCallDoAction(); // } // return false; //} } class TypeOneWorker { static int id = 0; int autoid = -1; public bool Action() { id++; autoid = id; Console.WriteLine("TypeOneWorker {0}.", autoid); //Console.ReadKey(); return true; } } class TypeTwoWorker { public bool Action() { Console.WriteLine("TypeTwoWorker."); //Console.ReadKey(); return false; } } static void Main(string[] args) { Caller c = new Caller(); TypeOneWorker typeOneWorker = new TypeOneWorker(); c.DoAction = new Caller.OnAction(typeOneWorker.Action); c.DoAction += new Caller.OnAction(new TypeTwoWorker().Action); c.DoAction += new Caller.OnAction(typeOneWorker.Action); c.DoAction += new Caller.OnAction(new TypeTwoWorker().Action); // // ... more 'n more // // c.DoAction = new Caller.OnAction(typeOneWorker.Action); // c.DoAction += new Caller.OnAction(new TypeTwoWorker().Action); // // c.DoAction -= BaWorker.Action; // c.CallDoAction(); object x = c.DoAction.GetInvocationList(); Console.Write("\n"); Console.Write("End M(ain)."); Console.ReadKey(); } } } Das Ganze ist Teil einer Mess-Steuer-Softare (Sensor / Ventil) die als multithreading umgesetzt weden soll. Wie bekomme ich nun bei einer beliebig langen Liste an Methoden-Aufrufen von Caller.DoAction eine bestimmte Methode wieder entfernt, wenn ich nicht weiss an welcher Stelle in der Liste / welches "Element" in der Liste diese Methode ist? Ich kann mir zwar per < c.DoAction.GetInvocationList() > die Liste abrufen. Ich kann auch per < c.DoAction -= typeOneWorker.Action > wieder eine Methode entfernen. Der delegate arbeitet dabei aber wie ein Stack - und entfernt das letzte, passende, Element in der Liste. Ich wuerd nun aber gern ein bestimmtes Element / eine bestimmte Methode entfernen, ohne zu wissen an welcher Stelle. Hm... wer weiss Rat? huebschen Abend wuensch ich, mf

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...