SynchronizingObject ISynchronizeInvoke

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Haudruferzappeltnoch.

    SynchronizingObject ISynchronizeInvoke

    Hallo,

    kann mir jemand erklären was ein SynchronizingObject eigentlich ist.

    Timers.Timer oder FileSystemWatcher benötigen z.B. so ein SynchronizingObject.
    Ich habe mir die Beschreibung natürlich angesehen
    Gets or sets the object used to marshal event-handler calls that are issued when an interval has elapsed

    Eine solche Eigenschaft scheint zu Klassen mit inhärenter Nebenläufigkeit zu gehören.
    Marshallen, so wie ich es bisher gehört habe, hat meist mit nativem Code zu tun.
    Das Object muss ISynchronizeInvoke implementieren. Diese Schnittstelle scheint sich meiner Ansicht nach überwiegend mit Nebenläufigkeit zu beschäftigen.

    Ich sehe noch nicht wie genau Marshalling und Nebenläufigkeit zusammenhängen.
    Vielleicht hat von euch einer eine gute Anschauung.

    Viele Grüße

    Haudruferzappeltnoch schrieb:

    when an interval has elapsed
    Das ist das Zauberwort.
    Die Systemuhr läuft und Du willst von Deinem Timer entsprechend benachrichtigt werden.
    Nebenläufig, sonst friert Deine GUI ein.
    Marshalling, weil die Uhr im System läuft, was nicht in .NET geschrieben wurde.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Die automatische deutsche Übersetzung des Microsoft-Artikels ist uaS :S
    Ich glaube nicht, dass hier marshallen relevant viel mit nativem Code zu tun hat. Hier sollte man wahrscheinlich einfach stattdessen das Wort »behandeln« verwenden.
    Wenn kein SynchronizingObject gesetzt ist, werden die Komponentenevents in einem eigenen Thread gefeuert. Die Konsequenzen bzgl. GUI-Manipulation sind klar. Wenn aber ein SynchronizingObject angegeben wird, werden die Events im selben SynchronizingObject-Erstellungs-Thread gefeuert. Koppelt man also eine GUI-Komponente, kann man GUI-Änderungen im Komponenteneventhandler durchführen.
    Mehr kann ich mir aber auch nicht zusammenreimen.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.