Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

MaceFan

User
  • Registriert

  • Letzter Besuch

Beiträge Beiträge von MaceFan

  1. vor 2 Stunden schrieb ihkaka:

    Wie wärs wenn du auf anonyme Methoden verzichtest :

    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. ·

    Bearbeitet von MaceFan

    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?

  3. 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>

  4. Veröffentlicht ·

    Bearbeitet von MaceFan

    '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

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.