vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Brandneu! sevEingabe v3.0 - Das Eingabecontrol der Superlative!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Re: Fehlermeldung aus einem Hintergrund-Task - wie macht man es richtig?! 
Autor: MikeJ
Datum: 25.02.14 17:45

@ErfinderDesRades: es ging mir weniger um unbehandelte Ausnahmen meiner Anwendung sondern vielmehr darum, wenn ein im Hintergrund laufender Thread aus welchen Gründen auch immer nicht planmäßig weiterarbeiten kann, dies dem User mittels "Messagebox" mitzuteilen. (Wobei die Messagebox hier etwas "mehr" darstellt).

@Manfred:
Zitat:

Ich würde denken, Deine Windows laufen im Oberflächenthread

Prinzipiell ja, allerdings dient das besagte Window rein nur der Meldungsausgabe. D.h. wenn keine Meldung ansteht, besteht auch keine Instanz des Windows.
Genau da weiß ich im Moment nicht so recht ob das so richtig gelöst ist: denn wenn jetzt ein "Meldegrund" auftritt, geschieht das im Hintergrund-Thread und der hat nunmal nicht die Möglichkeit das Window zu erstellen. Demnach müsste ich

a) es entweder vorher schon erstellt haben (bei Anwendungsstart) und immer ausgeblendet lassen bis ich es benötige

oder

b) mir einen Verweis auf den Dispatcher der Anwendung speichern (Application.Current.Dispatcher) um beim Auftreten eines Meldegrundes mittels dieses Dispatchers und Invoke eine Instanz des Melde-Windows zu erstellen und per ShowDialog anzuzeigen...


Hauptanwendung:
Private Sub MainWindow_Loaded(...) Handles Me.Loaded
    mjsMsgBox.Initialize()
End Sub
Auslösender Hintergrund:
mjsMsgBox.ShowBoxDialog("Hallo Welt")
Melde-Fenster Klasse:
Partial Public Class mjsMsgBox
    Private Shared STA_Dispatcher As Dispatcher
    Private Delegate Sub CallBox(Text As String)
 
    Public Shared Sub Initialize()
        STA_Dispatcher = Application.Current.Dispatcher
    End Sub
 
    Public Shared ShowBoxDialog(Text As String)
        Dim c As New CallBox(AddressOf Caller)
        STA_Dispatcher.Invoke(c, Text)
    End Sub
 
    Private Shared Caller(Text As String)
        Dim myBox As New mjsMsgBox
        myBox.ShowDialog(Text)
    End Sub
End Class
...es geht zwar - aber das wirklich glücklich bin ich damit nicht


Was ist nun die bessere Lösung - oder gibt es evtl. noch eine andere Möglichkeit?

Beitrag wurde zuletzt am 25.02.14 um 17:46:18 editiert.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Fehlermeldung aus einem Hintergrund-Task - wie macht man es ...1.480MikeJ25.02.14 08:14
Re: Fehlermeldung aus einem Hintergrund-Task - wie macht man...945ErfinderDesRades25.02.14 16:34
Re: Fehlermeldung aus einem Hintergrund-Task - wie macht man...942Manfred X25.02.14 17:03
Re: Fehlermeldung aus einem Hintergrund-Task - wie macht man...934MikeJ25.02.14 17:45
Re: Fehlermeldung aus einem Hintergrund-Task - wie macht man...905ErfinderDesRades25.02.14 18:05
Re: Fehlermeldung aus einem Hintergrund-Task - wie macht man...902MikeJ25.02.14 18:14
Re: Fehlermeldung aus einem Hintergrund-Task - wie macht man...928ErfinderDesRades25.02.14 18:25
Re: Fehlermeldung aus einem Hintergrund-Task - wie macht man...919MikeJ26.02.14 08:03
Re: Fehlermeldung aus einem Hintergrund-Task - wie macht man...903Manfred X26.02.14 11:02
Re: Fehlermeldung aus einem Hintergrund-Task - wie macht man...937MikeJ26.02.14 12:28
Re: Fehlermeldung aus einem Hintergrund-Task - wie macht man...950ModeratorFZelle26.02.14 12:52
Re: Fehlermeldung aus einem Hintergrund-Task - wie macht man...949ModeratorFZelle26.02.14 12:45

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel