tutorials.de Buch-Aktion 05/2012
Like Tree3Danke
  • 1 Beitrag von Nico Graichen
  • 1 Beitrag von DimpiM
  • 1 Beitrag von Nico Graichen
ERLEDIGT
JA
ANTWORTEN
7
ZUGRIFFE
593
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    july july ist offline Mitglied Gold
    Registriert seit
    May 2011
    Beiträge
    103
    Hallo zusammen,
    ich versuche gerade einen Wert aus einer Form an einen Thread übergeben, um den Thread zu beenden. Leider bekomm ich dabei folgende Compilerfehler:

    Error 1 'SmartDeviceProject3.Client' does not contain a definition for 'InvokeRequired' and no extension method 'InvokeRequired' accepting a first argument of type 'SmartDeviceProject3.Client' could be found (are you missing a using directive or an assembly reference?)
    Error 2 'SmartDeviceProject3.Client' does not contain a definition for 'Invoke' and no extension method 'Invoke' accepting a first argument of type 'SmartDeviceProject3.Client' could be found (are you missing a using directive or an assembly reference?)
    ich vermute, dass der Compiler so reagiert weil bei dem Thread vielleicht noch iwo InvokeRequired auf true gesetzt werden soll.

    Hier ist mein Code:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    
    Form.cs
     
    public partial class Form1 : Form
        {
          ........
         delegate void SetStoppedValueCallback(int value);
          .......
          public void SetStoppedValue(int value)
            {
                if (client.InvokeRequired)
                {
                    SetStoppedValueCallback d = new SetStoppedValueCallback(this.client.setStopped);
                    client.Invoke(d, new object[] { value });
                }
            }
    }
     
    Client.cs
            public void setStopped(int value)
            {
                stopped = value;
            }

    Habt ihr ne Idee wie man das Problem lösen könnte?

    Grüße July
     

  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

    Die Fehlermeldung ist eigentlich eindeutig: Client hat weder den Member Invoke noch InvokeRequired!
    Die beiden Member werden von der Control-Klasse zur Verfügung gestellt. Ist Client ein Control?
    july bedankt sich. 
    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
    DimpiM DimpiM ist offline Mitglied
    Registriert seit
    Oct 2010
    Beiträge
    19
    schreib in dein Konstuktor nachdem InitializeComponent den Befehl CheckForIlegalCrossCalls=false;

    Code :
    1
    2
    3
    4
    5
    
    public Form1()
    {
          InitializeComponent();
          CheckForIllegalCrossThreadCalls = false;
    }

    dann brauchst dich mit den Invoke usw. nicht mehr rumärgern.
    july bedankt sich. 

  4. #4
    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
    Zitat Zitat von DimpiM Beitrag anzeigen
    schreib in dein Konstuktor nachdem InitializeComponent den Befehl CheckForIlegalCrossCalls=false;
    [...]if you can't work out how to avoid these warnings, then you would be better-off avoiding multi-threaded programming
    Oder: Das Ausschalten der Prüfung ist nur Faulheit und mangelnder Wille es richtig zu machen!
     
    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

  5. #5
    DimpiM DimpiM ist offline Mitglied
    Registriert seit
    Oct 2010
    Beiträge
    19
    Für Anfänger ist die Methode schon gut. Wobei, wenn man sie kennt überwiegt ganz stark die Faulheit wenn man das nächste mal was mit Threads programmiert
     

  6. #6
    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
    Eben! Genau darum sollte man sowas gar nicht erst machen! Wenn man sein Geld damit verdienen will noch weniger!
    DimpiM bedankt sich. 
    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

  7. #7
    Avatar von Shakie
    Shakie Shakie ist offline Mitglied Diamant
    Registriert seit
    May 2004
    Ort
    Europa
    Beiträge
    2.048
    Zitat Zitat von DimpiM Beitrag anzeigen
    schreib in dein Konstuktor nachdem InitializeComponent den Befehl CheckForIlegalCrossCalls=false; dann brauchst dich mit den Invoke usw. nicht mehr rumärgern.
    Auf keinen Fall! Man gewöhnt sich nur einen schlechten Programmierstil an!
    @July: Hör auf Nico.
    Hast du deine originale Fehlermeldung inzwischen verstanden und konntest das Problem lösen?
     
    hihi = -h²

  8. #8
    july july ist offline Mitglied Gold
    Registriert seit
    May 2011
    Beiträge
    103
    Hast du deine originale Fehlermeldung inzwischen verstanden und konntest das Problem lösen?
    jep, hab ich verstanden und hab mein Problem jetzt einfacher gelöst, hab die Variable die ich brauche einfach im Thread public gemacht und übergebe in Form ihr einen richtigen Wert. Funktionniert 1A. Und da sie niergendswo anders verwendet wird, kommt zu keinen Konflikten.
    Grüße July
     

Ähnliche Themen

  1. Antworten: 3
    Letzter Beitrag: 14.10.11, 00:20
  2. C# Invoke und Thread - ListView wird nicht aktualisiert
    Von BitMan im Forum .NET Windows Forms
    Antworten: 10
    Letzter Beitrag: 02.06.10, 13:24
  3. [richfaces]/[jsf]: Bei action in einer Form auch Daten aus anderer Form übertragen
    Von paula123 im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 5
    Letzter Beitrag: 10.03.10, 15:14
  4. Antworten: 2
    Letzter Beitrag: 22.10.08, 14:16
  5. Thread.Invoke() Call
    Von Christian Kusmanow im Forum .NET Archiv
    Antworten: 2
    Letzter Beitrag: 08.01.05, 13:36

Stichworte