Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 16327|Antwort: 5

[WinForm] Wie Hintergrundthreads funktionieren, rahmen Webseiten

[Link kopieren]
Veröffentlicht am 22.01.2019 21:43:08 | | |
Zunächst einmal gibt es kein Problem, wenn ich die folgende Anweisung mit einem UI-Thread ausführe.
        private Void button9_Click_1(Objektsender, EventArgs e)
        {
            MSHTML. HTMLDocument doc = GetIe("URL"); GetIe ist eine Methode, um IE-Dokumente unter einer angegebenen URL zu erhalten;
            doc.frames.item(0).document.all.item("txtLimits").innerText = "123";
        }
Wenn ich es jedoch in einen Hintergrundthread setze, wird eine Ausnahme angezeigt: InvalidCastException, die angegebene Konvertierung ist ungültig, der Code lautet wie folgt
   private asynchrone Void button9_Click_1(Objektabsender, EventArgs e)
        {
            Action Action = neue Action (test12);
            warten auf Task.Run(Aktion);
        }
        Private Void Test12()
        {
            MSHTML. HTMLDocument doc = GetIe("URL");
            doc.frames.item(0).document.all.item("txtLimits").innerText = "123";
        }

。。。 Wie schreibt man die richtige?




Vorhergehend:Die heutigen C#-Lernnotizen
Nächster:"Senran Kagura Burst: Re:Newal" chinesische und englische kostenlose Version
Veröffentlicht am 23.01.2019 08:03:26 |
Veröffentlicht am 23.01.2019 09:08:36 |
Veränderung  

Versuch es mal

Punktzahl

Anzahl der Teilnehmer1MB+1 beitragen+1 Zusammenbruch Grund
crystal0330 + 1 + 1 Sehr mächtig!

Alle Bewertungen sehen

 Vermieter| Veröffentlicht am 23.01.2019 22:04:56 |

Vielen Dank, das Problem ist gelöst, es ist nur so, dass ich neu bei Async bin und nicht verstehe, warum es so geschrieben ist, es wäre perfekter, wenn du es erklären könntest.
 Vermieter| Veröffentlicht am 24.01.2019 06:38:37 |
Dieser Beitrag wurde zuletzt von crystal0330 am 24.1.2019 um 06:55 Uhr bearbeitet

Hallo, ich bin in Zukunft auch auf ein Problem gestoßen:



ClickYes ist eine Methode, mit der man die Maus zum OK-Button im Pop-up-Fenster bewegen und zweimal klicken kann



Jetzt habe ich zwei Probleme:
1. Schreibe so,ClickYes kann nur zulassenDer zweite Mausklick, also der erste Klick, wird nicht ausgeführt; wenn er sich im UI-Thread befindet, kann er zweimal angeklickt werden;
2. Ich habe einen Breakpoint in der ClickYes-Methode erreicht, und nachdem das Programm unterbrochen wurde, habe ich erneut F11 gedrückt und den nächsten Code in ClickYes nicht ausgeführt. Wie debuggt man also Schritt für Schritt?

 Vermieter| Veröffentlicht am 24.01.2019 14:33:03 |

Hallo, ich habe es gerade nochmal versucht, und wenn ich so schreibe, bleibt die Winform-Oberfläche wieder hängen, was derselbe Effekt hat wie beim direkten Nutzen des UI-Threads...
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com