1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Asynchrones Aufrufen von Methoden unterbinden

Dieses Thema im Forum "Support & Discussion" wurde erstellt von PierreDole, 29. Juli 2017.

  1. PierreDole

    PierreDole New Member

    Registriert seit:
    25. Juli 2017
    Beiträge:
    16
    Zustimmungen:
    4
    Punkte für Erfolge:
    3
    Geschlecht:
    männlich
    Ort:
    De op't schöönst Stadt de Welt
    Mich plagt im Moment ein kleines Problemchen.

    Wenn eine entsprechende Checkbox betätigt wird, werden 3 Methoden aufgerufen, die nacheinander abgearbeitet werden sollen.

    Code (Text):
    private void CheckBoxAutoClaimCheckedChanged(Object sender, EventArgs e)
            {
                if(checkBoxAutoClaim.Checked)
                {
                    inventory.SetLootBag();
                    inventory.SetRegBag();
                    inventory.SetTrashBag();
                }
            }
    Leider werden sie parallel aufgerufen. Zumindest bekomme ich alle drei Nachrichten hintereinander angezeigt, egal ob uo.TargCurs true oder false ist. Das sind die set-Methoden:
    Code (Text):
    public bool SetLootBag()
            {
                uo.SysMessage("Loot Bag:", 0);
                uo.TargCurs = true;
                // uo.WaitWhileTargetCursor(10000);
                while (uo.TargCurs)
                    Thread.Sleep(10);

                LootBagID = uo.LTargetID;
                return true;
            }

            public bool SetRegBag()
            {
                uo.SysMessage("Reg Bag:", 0);
                uo.TargCurs = true;
                // uo.WaitWhileTargetCursor(10000);
                while (uo.TargCurs)
                    Thread.Sleep(10);

                RegBagID = uo.LTargetID;
                return true;
            }

            public bool SetTrashBag()
            {
                uo.SysMessage("Trash Bag:", 0);
                uo.TargCurs = true;
                // uo.WaitWhileTargetCursor(10000);
                while (uo.TargCurs)
                    Thread.Sleep(10);

                TrashBagID = uo.LTargetID;
                return true;
            }
    Eigentlich habe ich erwartet, daß nach dem Aufrufen der ersten Methode die nächste Methode erst aufgerufen wird, wenn die vorherige fertig durchlaufen wurde. Das scheint nicht Fall zu sein. Kann man da irgendwas machen?
     
  2. Pentox

    Pentox New Member

    Registriert seit:
    4. Juli 2017
    Beiträge:
    24
    Zustimmungen:
    6
    Punkte für Erfolge:
    3
    würde sagen mit async
    würde dann so ausehen:
    await inventory.SetLootBag();
    await inventory.SetRegBag();
    etc...

    er wartet bis das erste abgearbeitet wird.
    dann das nächste etc
     
  3. PierreDole

    PierreDole New Member

    Registriert seit:
    25. Juli 2017
    Beiträge:
    16
    Zustimmungen:
    4
    Punkte für Erfolge:
    3
    Geschlecht:
    männlich
    Ort:
    De op't schöönst Stadt de Welt
    Funktioniert leider nicht. Der Compiler sagt, daß await nur bei Methoden verwendet werden darf, die den async Modifier haben.
     
  4. Pentox

    Pentox New Member

    Registriert seit:
    4. Juli 2017
    Beiträge:
    24
    Zustimmungen:
    6
    Punkte für Erfolge:
    3
  5. PierreDole

    PierreDole New Member

    Registriert seit:
    25. Juli 2017
    Beiträge:
    16
    Zustimmungen:
    4
    Punkte für Erfolge:
    3
    Geschlecht:
    männlich
    Ort:
    De op't schöönst Stadt de Welt
    Das Problem saß vorm Monitor.;) Ich hab an einer anderen Stelle des Codes per While-Schleife auf die DLL zugreifen lassen und als sie dann den TargCurs ändern sollte, ging gar nichts mehr. Da die Variable also unverändert blieb, rauschten die Methoden einfach durch. Naja, ich sammle noch Erfahrung mit DLLs dieser Art. :)
     

Diese Seite empfehlen

Die Seite wird geladen...