tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
12
ZUGRIFFE
2612
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    BeaTBoxX BeaTBoxX ist offline Mitglied Platin
    Registriert seit
    Mar 2003
    Ort
    Nürnberg
    Beiträge
    525
    Hallo zusammen,

    und weiter gehts mit einem neuen Problem

    Ich habe (immernoch) eine Art FTP Client an dem ich programmiere.
    Für den Komfort habe ich gewisse Funktionen in eigene Threads ausgelagert(Connect, Login, Upload usw usw)

    Des weiteren habe ich ein paar Events erstellt um eine gewisse Syncronisation reinzubringen.

    Mein Problem nun:

    Beispielszenario:

    Thread B verbindet sich grade mit dem FTP Server. Wenn fertig tritt ein Event auf , sinnngemäß "Connection established"

    Diese Info möchte ich zurück an Thread A übermitteln (das is der hauptthread von dort wurde Thread B erschaffen)

    Im Thread A möchte ich eine Statustextbox mit dieser Info updaten.

    Nun meckerts aber, weil ich angeblich:

    Cross-thread operation not valid: Control 'StatusTextbox' accessed from a thread other than the thread it was created on.
    Kann mir bitte wer sagen, wie man sowas auf elegantem Wege macht?

    Danke!

    Gruß
    Frank
     
    Nürnberg ist die geheime Welthaupstadt der Musik, das weiss nur noch keiner :-)

  2. #2
    Avatar von Nico Graichen
    Nico Graichen Nico Graichen ist offline aka gemballa
    tutorials.de Moderator
    Registriert seit
    Dec 2003
    Ort
    Pulheim (NRW)
    Beiträge
    3.898
    Blog-Einträge
    34
    Hi,

    Invoke ist das Stichwort, wonach du suchst.
    Über Delegates kannst du Thread-übergreifend kommunizieren.

    Beispiele dazu findest du in der MSDN


    Sorry, hab nicht viel Zeit, aber jetzt weißt du, wonach du suchen musst.
     
    Grüße Nico
    ----------------------
    Xing
    ----------------------
    Zitat Zitat von Mark Twain (1835-1910)
    Es gibt drei Dinge, die eine Frau aus dem Nichts hervorzaubern kann: einen Hut, einen Salat und einen Ehekrach.
    Zitat Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
    The Difference Between God and Larry Ellison: God Doesn't Think He's Larry Ellison

  3. #3
    Avatar von Nil18
    Nil18 Nil18 ist offline Mitglied Gold
    Registriert seit
    Sep 2006
    Ort
    Wien Meidling / Österreich
    Beiträge
    128
    Um Domain oder Context übergreifend arbeiten zu können würde sich auch die Remoting Technologie anbieten.
    Geändert von Nil18 (29.11.06 um 10:02 Uhr)
     
    Liebe Grüße, Nil

    Die Summe des eingesetzten Know-hows beim Programmieren ist indirekt proportional zu der Zahl der für den Anwender verständlichen Funktionen.

  4. #4
    Avatar von Christian Kusmanow
    Christian Kusmanow Christian Kusmanow ist offline Mitglied Diamant
    Registriert seit
    Aug 2004
    Ort
    Aachen (NRW)
    Beiträge
    2.208
    Blog-Einträge
    15
    Zitat Zitat von Nil18 Beitrag anzeigen
    Um *Domain übergreifend arbeiten zu können bietet sich auch die Remoting Technologie an.
    Ich glaub Du hast grad das Thema verfehlt. *g*
    Es geht um Threads und nicht um Domains.

    @ThreadStarter: Schau dich mal in dem folgenden Thema um.
    AW: Probleme beim neuzeichnen von pictureBox - Post (Beispielprogramm)
    Darin findest ein Beispiel mittels Delegates ereignissgesteuert mit unterschiedlichen Threads zu kommunizieren.
    Definier einen Delegate danach ein Event mit dem Deleagte als Handler und schon hast was Du brauchst.

    In diesen Thread findest alles weitere zum Thema und Techniken merere Threads zu verwalten.
    Musst Dich aber durchklicken um an alle Infos zu kommen.
    Thread Hilfe, wie beenden? - Thread
     
    MfG,
    Christian

    Wer sein Problem definiert, hat es schon halb gelöst!

    Bitte markiert eure Themen als erledigt. Sonst macht so ein Forum als Nachschlagewerk keinen Sinn.

    The Code Project! - C# Programming | C# / VB.NET Pendants

    Regeln + Netiquette

    Liebe FIAEs, verlasst euch nicht auf das was in der Berufsschule "vermittelt" wird
    und vor allem nicht auf das, was euch die IHK dazu erzählt!
    Die haben so viel Ahnung von dem Gewerk, wie der Bundestag vom Haushalt...

  5. #5
    Avatar von Nil18
    Nil18 Nil18 ist offline Mitglied Gold
    Registriert seit
    Sep 2006
    Ort
    Wien Meidling / Österreich
    Beiträge
    128
    Habe den Post vor Deiner Antwort editiert cosmo.
    Ein Thread bildet meines Wissens nach einen eigenen, geschlossenen Context. Man kann also von keinem Thread aus auf Variablen eines anderen Threads zugreifen.

    Und für genau das Prob. war meine Lösung gedacht.
    Falls es trotzdem eine Verfehlung des Themas is oder meine Antwort einfach falsch, dann bitte um Entschuldigung
    Geändert von Nil18 (29.11.06 um 13:19 Uhr)
     
    Liebe Grüße, Nil

    Die Summe des eingesetzten Know-hows beim Programmieren ist indirekt proportional zu der Zahl der für den Anwender verständlichen Funktionen.

  6. #6
    Avatar von Christian Kusmanow
    Christian Kusmanow Christian Kusmanow ist offline Mitglied Diamant
    Registriert seit
    Aug 2004
    Ort
    Aachen (NRW)
    Beiträge
    2.208
    Blog-Einträge
    15
    Naja, ich weiss immer noch nicht was Remoting damit zu tun hätte.

    Mann kann sehr wohl auf Variablen in anderen Threads zugreifen.
    Nur sieht es bei Controls schlecht aus, da sie ihrer visuellen Beschaffenheit wegen
    nur von einem Thread verändert werden dürfen, damit das Eventhandling nicht durcheinander kommt
    und auch keine Deathlocks enstehen.

    Bei normalen Objekten kann es auch dazu kommen,
    sofern 2 Objekte geichzeitig darauf zugreifen. Weiterhin kann es auch auch zu Inkonsistenzen der Daten kommen...
    Um dem vorzubeugen hat man aber ein paar sehr mächtige Werkzeuge zu Verfügung.
    1. Das volatile Schlüsselwort, welches einen synchronisierten Zugriff lediglich für eine einzelnes Objekt ermöglicht.
      Dieses Schlüsselwort kann zB in einer Singleton-Implemenation verwendet werden.
      Code csharp:
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      
      static volatile MainForm mainForm;
      static object syncRoot = new object();
       
      public static MainForm GetInstance {
          get {
              if ( !InstanceExists ){
                  lock ( syncRoot ){
                      mainForm = new MainForm();
                  }
              }
              return mainForm;
          }
      }
    2. Für Codeanbschitte die Monitor.Enter & Monitor.Exit Methoden.
      Code csharp:
      1
      2
      3
      
      Monitor.Enter( syncRootObj );
              // synchronized access goes here
      Monitor.Exit( syncRootObj );
      Equivalent dazu das lock Schlüsselwort
      Code csharp:
      1
      2
      3
      
      lock ( syncRootObj ) {
              // synchronized access goes here
      }
    3. Um ganze ganze Methoden zu Synchronisieren hat man sogar das Attribut MethodImplAttribute zu Verfügung.
      Code csharp:
      1
      2
      3
      4
      5
      
      [MethodImpl(MethodImplOptions.Synchronized)
      void SynchronizedMethod()
      {
              // synchronized access goes here
      }
     
    MfG,
    Christian

    Wer sein Problem definiert, hat es schon halb gelöst!

    Bitte markiert eure Themen als erledigt. Sonst macht so ein Forum als Nachschlagewerk keinen Sinn.

    The Code Project! - C# Programming | C# / VB.NET Pendants

    Regeln + Netiquette

    Liebe FIAEs, verlasst euch nicht auf das was in der Berufsschule "vermittelt" wird
    und vor allem nicht auf das, was euch die IHK dazu erzählt!
    Die haben so viel Ahnung von dem Gewerk, wie der Bundestag vom Haushalt...

  7. #7
    Avatar von Nil18
    Nil18 Nil18 ist offline Mitglied Gold
    Registriert seit
    Sep 2006
    Ort
    Wien Meidling / Österreich
    Beiträge
    128
    Hm ich halte besser meine Klappe wenn ich mir bei meinen Antworten nicht mal selbst sicher bin

    Naja, bin selber erst Anfänger und bei weitem nicht so professionell unterwegs wie du

    Sorry für den sinnlos Post.

    PS: Keine Sorge, das soll kein "kindisch-eingeschnapptes Verhalten" sein, sondern die Realität...
     
    Liebe Grüße, Nil

    Die Summe des eingesetzten Know-hows beim Programmieren ist indirekt proportional zu der Zahl der für den Anwender verständlichen Funktionen.

  8. #8
    Avatar von Christian Kusmanow
    Christian Kusmanow Christian Kusmanow ist offline Mitglied Diamant
    Registriert seit
    Aug 2004
    Ort
    Aachen (NRW)
    Beiträge
    2.208
    Blog-Einträge
    15
    NP. Dein Posting war lediglich ein Ansporn das jetzt mal genauer zu erkären.
    Ich hab grad angefangen ein Tutorial dazu zu schreiben,
    darin werde ich auch mit Beispielen erläutern,
    wie man thread-übergeifend auf Controls und deren Eigenschaften zugreifen kann,
    was ja in meinem Posting noch gefehlt hat und man sich schlecht als Anfänger
    aus den von mir weiter oben geposteten Links entnehmen kann, wie ich grad fest gestellt hab.

    Werde dann den Link hier posten, ok.
     
    MfG,
    Christian

    Wer sein Problem definiert, hat es schon halb gelöst!

    Bitte markiert eure Themen als erledigt. Sonst macht so ein Forum als Nachschlagewerk keinen Sinn.

    The Code Project! - C# Programming | C# / VB.NET Pendants

    Regeln + Netiquette

    Liebe FIAEs, verlasst euch nicht auf das was in der Berufsschule "vermittelt" wird
    und vor allem nicht auf das, was euch die IHK dazu erzählt!
    Die haben so viel Ahnung von dem Gewerk, wie der Bundestag vom Haushalt...

  9. #9
    Avatar von Nil18
    Nil18 Nil18 ist offline Mitglied Gold
    Registriert seit
    Sep 2006
    Ort
    Wien Meidling / Österreich
    Beiträge
    128
    [ ]
    Sag mal cosmo, wieviel Zeit hast Du eigentlich?
    Den ganzen Tag hier im Forum und nebenbei noch Tutorials schreiben *gg*
    [/ ]

    Eben das meinte ich mit meiner Aussage, ich weiß einfach noch zu wenig um es auch wirklich begründen zu können.
    Habe nur das weiter gegeben was mit erklärt wurde.
    Eben das Remoting u.a. dazu gut ist, um beispielsweise AppDomain übergreifend arbeiten zu können. Und angeblich hat ein Thread eben auch eine eigene gültigkeits Domain. Aber naja, konkrete Beispiele dazu kann ich nicht liefern, da ich mich selbst erst gerade in diese ganze Thematik einarbeite...

    Nunja... was solls ... Selbstmitleid hilft nicht
    Werd mal zurück an die Arbeit gehn.
     
    Liebe Grüße, Nil

    Die Summe des eingesetzten Know-hows beim Programmieren ist indirekt proportional zu der Zahl der für den Anwender verständlichen Funktionen.

  10. #10
    Avatar von Christian Kusmanow
    Christian Kusmanow Christian Kusmanow ist offline Mitglied Diamant
    Registriert seit
    Aug 2004
    Ort
    Aachen (NRW)
    Beiträge
    2.208
    Blog-Einträge
    15
    Das Tut werde ich auch erst heute abend schreiben.

    Du musst das was falsch verstanden haben, oder Dir hat irgend ein Berufsschullehrer
    igend welchen Mist, wie so oft aus meiner Erfahrung, erzählt.

    Gedult, Gedult. Das Tut kommt schon noch.

    Und zum Thema Remoting:
    Remoting - Verständisproblem - Thread
    Server Client Anwendung - Thread
     
    MfG,
    Christian

    Wer sein Problem definiert, hat es schon halb gelöst!

    Bitte markiert eure Themen als erledigt. Sonst macht so ein Forum als Nachschlagewerk keinen Sinn.

    The Code Project! - C# Programming | C# / VB.NET Pendants

    Regeln + Netiquette

    Liebe FIAEs, verlasst euch nicht auf das was in der Berufsschule "vermittelt" wird
    und vor allem nicht auf das, was euch die IHK dazu erzählt!
    Die haben so viel Ahnung von dem Gewerk, wie der Bundestag vom Haushalt...

  11. #11
    Avatar von Christian Kusmanow
    Christian Kusmanow Christian Kusmanow ist offline Mitglied Diamant
    Registriert seit
    Aug 2004
    Ort
    Aachen (NRW)
    Beiträge
    2.208
    Blog-Einträge
    15
    So, wie angekündigt hab ich nun mein Tutorial zum Thema veröffentlicht.

    Multi-Threading - Teil1: Einführung - Tutorial

    Teil 2: Windows Forms folgt dann nächste Woche.
     
    MfG,
    Christian

    Wer sein Problem definiert, hat es schon halb gelöst!

    Bitte markiert eure Themen als erledigt. Sonst macht so ein Forum als Nachschlagewerk keinen Sinn.

    The Code Project! - C# Programming | C# / VB.NET Pendants

    Regeln + Netiquette

    Liebe FIAEs, verlasst euch nicht auf das was in der Berufsschule "vermittelt" wird
    und vor allem nicht auf das, was euch die IHK dazu erzählt!
    Die haben so viel Ahnung von dem Gewerk, wie der Bundestag vom Haushalt...

  12. #12
    BeaTBoxX BeaTBoxX ist offline Mitglied Platin
    Registriert seit
    Mar 2003
    Ort
    Nürnberg
    Beiträge
    525
    Moin Jungs =)

    Danke nochmal.. hab grad zufaellig nochmal reingeguggt.

    Meine Lösung (wie niggo es vorgeschlagen hat) war dann:

    InvokeRequired prüfen und ggf einen Callback auf einen vorher angelegten Delegate machen. Dann gings

    Bin schon auf den zweiten Teil des Tuts gespannt


    Gruß
    Frank
     
    Nürnberg ist die geheime Welthaupstadt der Musik, das weiss nur noch keiner :-)

  13. #13
    Avatar von Christian Kusmanow
    Christian Kusmanow Christian Kusmanow ist offline Mitglied Diamant
    Registriert seit
    Aug 2004
    Ort
    Aachen (NRW)
    Beiträge
    2.208
    Blog-Einträge
    15
    Zitat Zitat von BeaTBoxX
    Bin schon auf den zweiten Teil des Tuts gespannt
    Hat Dir der erst Teil also gefallen.
    Nungut, verrate mir doch mal bitte wo Du denn generell so Verständnissprobleme hast und was Dich besonders interessiert, damit ich den Inhalt des 2. Teils vielleicht noch gehaltvoller gestalten kann.

    Ich hab auch schon eine Idee für einen 3. Teil. Ein Beispielprogramm was die Inhalte der ersten 2 Teile anhand von pratischen Beispielen demonstriert.
    Das Beispielprogramm ist schon fertig, würde es nur nochmal überarbeiten und erweitern wollen. AW: Probleme beim neuzeichnen von pictureBox - Thread
    Geändert von Christian Kusmanow (13.12.06 um 11:55 Uhr)
     
    MfG,
    Christian

    Wer sein Problem definiert, hat es schon halb gelöst!

    Bitte markiert eure Themen als erledigt. Sonst macht so ein Forum als Nachschlagewerk keinen Sinn.

    The Code Project! - C# Programming | C# / VB.NET Pendants

    Regeln + Netiquette

    Liebe FIAEs, verlasst euch nicht auf das was in der Berufsschule "vermittelt" wird
    und vor allem nicht auf das, was euch die IHK dazu erzählt!
    Die haben so viel Ahnung von dem Gewerk, wie der Bundestag vom Haushalt...

Ähnliche Themen

  1. Thread
    Von Bobiq im Forum Java
    Antworten: 2
    Letzter Beitrag: 01.05.09, 23:52
  2. Thread
    Von xXchrissiXx im Forum Java
    Antworten: 12
    Letzter Beitrag: 22.05.07, 16:27
  3. VB.NET Thread und GUI
    Von Peter Parker im Forum .NET Archiv
    Antworten: 1
    Letzter Beitrag: 16.06.05, 10:25
  4. VB.NET Thread und XML
    Von Peter Parker im Forum .NET Archiv
    Antworten: 1
    Letzter Beitrag: 08.06.05, 09:02
  5. Antworten: 19
    Letzter Beitrag: 12.07.02, 11:13