Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

Hallo ihr,

ich habe eine Klasse, die Arbeit per Thread ausführt. Wenn ich nun aus diesem Thread per Event mit meinem Hauptfenster kommunizieren will, muss ich das ja per Invoke in den GUI-Thread umleiten. Angenommen meine Klasse hat noch weitere Events, macht man das dann so, dass die Events der Klasse alle aus dem selben Thread kommen (d.h. ich müsste das Event aus dem Thread in den Erzeuger-Thread der Klasse umleiten), oder macht man das dann erst an zentraler Stelle, meinetwegen im ViewModel?

 

 

 

  • 1 Monat später...

Hi steinandler!

Ich hatte in einem meiner Projekte ein ähnliches Problem, bei dem ich eine Datenbank-Abfrage in einen eigenen Task ausgelagert hatte.Nach Beendigung der Abfrage wurde dann über einen Referenz auf das UI die entsprechenden Steuerelemente neu betextet.

Hab das ganze dann darauf hin umgestellt, als dass ich per Timer (System.Windows.Form-Timer) alle 5 Sekunden die Abfrage gestartet habe und dann ein Event feuere, für welches ich im UI den entsprechenden Handler habe. Das Problem, war du hast bzw haben wirst, wenn du in Thread 2 ein Even feuerst und in deiner UI-Klasse das Event behandelst, dann wirst du eine InvalidOperationException erhalten, da das Event nicht im UI-Thread behandelt wird, sondern in dem Aufruf-Thread #2. D.h. du greifst dann von Thread 2 auf den UI-Thread zu (was zu genannter Exception führt).

Im Endeffekt wirst du das lösen müssen, indem du in der UI-Klasse deine Handler-Methoden unterbringst und dann per Invoke die Controls ansprichst. 

  • 4 Monate später...

Um welche Programmiersprache geht es denn hier?

Normalerweiße bietet deine (G)UI Library eine executeAfter() oder z.B. eine Platform.runLater() Methode (JavaFX Library), bei der du den Code übergibst, der dann in dem UI Thread ausgeführt wird.

 

z.B. für Java:

//do something, get data and so on

//run in UI thread
Platform.runLater(() -> {
  //your UI Update code here
});

//other code here

 

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.