Immer schön lächeln:
Gefunden im Stauferpark Göppingen.
Immer schön lächeln:
Gefunden im Stauferpark Göppingen.
Schon die dritte Hundemarke für Hündin Jara erhalten, letzte Woche:
Und ich fühle mich Pudelwohl („Mischlingwohl“?), aber immer noch nicht wie der typische Hundebesitzer. Zum Glück, vermutlich.
Introduction
Today I faced a strange issue; I was catching an Exception in a BackgroundWorker’s thread, threw a new exception and handled it in the main GUI thread by showing the exception’s Message in a message box.
The strange thing was, that no matter what I did, the main GUI thread always displayed the message of the first generated exception in the background thread.
Cause
As described by user „nobugz“ in this discussion, the cause is:
This is an architectural limitation to the way exceptions are marshalled from one thread (the BGW’s) to another (the UI thread). Only a single exception object can get copied, the designers chose the first one thrown as the most likely to be relevant. You’ll need to work around this restriction.
Interestingly enough this behavior seems to occur only in an Application.ThreadException handler which seems to pick up the exception from somewhere (maybe TLS?)
Resolution
The resolution is to handle the exception directly in the RunWorkerCompleted handler where it gets forwarded to and not to throw the exception any further, until the Application.ThreadException handler of the GUI thread handles it.
Example application
To show the error in a small example project I created a tiny Windows Forms application which you may download from here.
Main Window with erroneous Behavior
When the check box is activated, the erroneous behavior is being performed when clicking the button:
The first generated exception is being displayed to the end user instead the actual one that is being thrown later in the background thread.
Main Window with expected Behavior
When the check box is not activated when clicking the button, the expected result is being displayed; the latest thrown exception:
Summary
I’ve just shown you a case where (in my eyes) the .NET Framework behaves wrong.
Maybe you find this article useful or even prove that I am wrong or how to handle in a more elegant way.
Looking forward for your feedback!
Fehlermeldung
Beim Laden aus einer XML-Datei erhielt ein Kunde unseres CMS Zeta Producer folgende Fehlermeldung:
System.UriFormatException
—————–
Invalid URI: The hostname could not be parsed.
—————–
at System.Uri.CreateThis(String uri, Boolean dontEscape, UriKind uriKind)
at System.Uri..ctor(String uriString, UriKind uriKind)
at System.Xml.XmlResolver.ResolveUri(Uri baseUri, String relativeUri)
at System.Xml.XmlUrlResolver.ResolveUri(Uri baseUri, String relativeUri)
at System.Xml.XmlTextReaderImpl..ctor(String url, XmlNameTable nt)
at System.Xml.XmlDocument.Load(String filename)
at Zeta.EnterpriseLibrary.Tools.Storage.PersistentXmlFilePairStorage.load()
at Zeta.EnterpriseLibrary.Tools.Storage.PersistentXmlFilePairStorage.set_FilePath(FileInfo value)
at ZetaProducer.RuntimeBusinessLogic.Code.AppHost.Host.InitializeInstance()
at ZetaProducer.RuntimeMain.Code.AppHost.Host.InitializeInstance()
at ZetaProducer.Main.Code.AppHost.Host.InitializeInstance()
at ZetaProducer.Main.Code.AppHost.Host.process()
Ursache
Ursache war, dass der Kunde Parallels unter Mac OS X verwendet hat um Zeta Producer in einer virtuellen Maschine laufen zu lassen.
Gleichzeitig lagen die „Eigenen Dateien“ auf Mac OS X und wurden via Parallels in die virtuelle Maschine eingebunden.
Der Pfad war sichtbar als:
\\.psf\Home\Documents\Zeta Producer 9
Damit scheint die Uri-Klasse von .NET nicht zurecht zu kommen.
Lösung
Eine schnelle Lösung aus Anwendersicht ist, den UNC-Pfad „\\.psf\Home\Documents\Zeta Producer 9“ als Laufwerksbuchstaben unter Windows zu verbinden und dieses Laufwerk dann als Home-Ordner zu konfigurieren.
Eine programmierte Lösung wird so aussehen, dass ich das Laden eines XmlDocument selbst durchführe (via Stream) und dann den geladenen Stream (bzw. die Zeichenfolgen als string) an das XmlDocument übergebe. So umgehe ich die Uri-Klasse, die wohl mit UNC-Pfaden die mit „.“ beginnen Schwierigkeiten hat.
Dies ist ein subjektiver Erfahrungsbericht nach 7 Monaten Golf GTI 6.
Achtung! Dieser Bericht hat nix mit Fahrdynamik-Pseudo-Ahnungs-Geschriebsel zu tun. Ich bin Auto-Laie (und stolz darauf). Ich bin schlicht Anwender von Autos. Je einfacher mir die Anwendung des Autos fällt, desto zufriedener werde ich mit dem Auto sein.
Golf GTI 6 ist ein Scheiß!
Wie bereits angedeutet, ist die Mängelliste meines VW Golf GTI 6 deutlich länger als die meines davor geleasten VW Golf GTI 5 den ich 2005 bekommen habe.
Aus fahrtechnischer Sicht mag der Golf sicher gut sein, das kann ich nicht beurteilen und es ist mir auch relativ wurscht (so lange es gut funktioniert und nicht stört).
Ich finde vieles positiv beim Golf GTI 6:
Leider gibt es auch sehr vieles Negatives zu finden das zwar nüchtern betrachtet relativ unerheblich ist, aber kombiniert und über die Zeit betrachtet sind die Mängel viel zu viel.
Als Zitat aus der eingangs erwähnten Mängelliste hier nochmals die größten Ärgernisse aufgelistet:
Hinzu kommen noch systembedingte Ärgernisse die stören:
Wenn ich morgens ins Büro fahre, steige ich zunächst ins Auto ein, schnalle mich an, mache die Zündung an.
Reflexartig drehe ich den Ton auf stumm, da in 90% der Fälle ja Radio angeht, obwohl am Abend davor iPod aktiv war. Ich hasse hasse hasse Radio.
Alternativ drehe ich nicht auf stumm sondern versuche gleich den am „Media-in“-Anschluss angeschlossenen iPod durch Drücken auf die „Media“-Taste auszuwählen.
Das Stumm-Drehen gelingt leider erst nach einer Weile, genau so wie die „Media“-Taste eine Aufwärmphase von 20-30 Sekunden zu benötigten scheint (Werkstatt hat mal was von „Bus“ gesprochen, ich habe aber einen PKW, keinen Bus. Seggl der!).
Nun bin ich inzwischen so weit vorgefahren, dass ich das erste mal zurücksetzen kann.
Gleichzeitig versuche ich nun: Rückwärtsgang einlegen, Parkasisstent-Taste zum Ausschalten der Piepgeräusche zu drücken und die Lautstärke erneut runterzudrehen, da die auf dem Bildschirm inzwischen erscheinende visuelle Einparkhilfe die zuvor unternommenen Bemühungen der Lautstärke-Stummschaltung bzw. der „Media“-Taste unterbrochen und somit zunichte gemacht haben.
Dieses Procedere führe ich 3 mal durch. Dann bin ich draußen aus der Tiefgarage und fahre ins Büro.
Wenn ich Glück habe bucht das Bluetooth-System mein iPhone nicht aus und wieder ein (jeweils durch einen ohrenbetäubenden Signalton signalisiert); meistens habe ich Pech.
Während der Fahrt habe ich noch wahlweise zusätzlich folgende akustische Bereicherungen: Signalton wenn es unter 4°C wird („Frost“, haha), Signalton wenn ich tanken sollte.
Völlig reizüberflutet komme ich im Büro an.
Abends auf dem Heimweg dann jeweils dasselbe „in grün“, wie das wohl heißt.
Danach falle ich entspannt ins Bett und träume von Autos bei denen Apple die Usability entworfen hat.
Ich war mit dem Golf GTI 5 sehr zufrieden, mit dem Golf GTI 6 bin ich deutlich weniger zufrieden.
Wie es der Hersteller geschafft hat, gute Funktionen konsequent zu verschlechtern und schlechte Funktionen beizubehalten finde ich gleichzeitig faszinierend und traurig.
Ggf. erwarte ich zu viel von einem Auto dieser Preisklasse; da es aber bereits bessere Produkte (Golf 5) gab, bin ich trotzdem verärgert.
Ich hoffe dieser Artikel hilft dem einen oder anderen bei der Kaufentscheidung für oder gegen einen Golf.
Seit Beginn der Zeitrechnung leide ich an einem Symptom das ich als „Kurzzeit-Vergesslichkeit“ bezeichne:
Kleine Dinge die ich mir vornehme zu machen vergesse ich durchzuführen.
Beispielsweise gestern Morgen, wollte ich ein Laib Brot von zu hause mit ins Büro nehmen. Nach dem Aufstehen das Brot aus dem Kühlschrank genommen und im Flur deponiert. Vormittags im Büro habe ich dann Hunger bekommen und festgestellt, dass ich das Brot daheim vergessen hatte.
Weiteres Beispiel: Gestern Abend im Büro die „Herr Bello“-DVD zum Mitnehmen vorbereitet; daheim aufm Sofa mit Jana dann nach einer Stunde festgestellt, dass die DVD noch im Büro liegt.
Oder früher zu Schulzeiten; Einmal hat mich der Busfahrer raus geworfen, weil ich 3 Tage in Folge vergessen habe die Monatskarte für den neuen Monat von zu hause einzustecken. Ich habe jedes mal beim Aufstehen dran gedacht und jedes mal dann im Bus wieder festgestellt, dass sie noch zu hause liegt.
Andererseits kann ich mir wichtige Dinge, Termine, usw. sehr gut merken. Ich bin immer überpünktlich zu Terminen und habe Aufgaben meistens schon weit vor Fristende erledigt. Manchmal wenn ich keine Termine habe, überlege ich sogar ob ich welche vergessen habe.
Nur die Kurzzeit-Vergesslichkeit bei (aus meiner Sicht) kleinen, unwichtigen Dingen, die bekomme ich scheinbar nicht weg.
Ich könnte mir zwar alles aufschreiben, aber bisher waren solche Vergesslichkeiten (fast) immer harmlos, so dass der Leidensdruck sehr gering war.
Und irgendwann kann ich eh alles aufs Alter schieben. Mit Jogi haben wir uns fest vorgenommen, dass wenn wir mal alte Rentner sind, wir uns zusammen in die Fußgängerzone setzen und Leute beleidigen. Falls uns dann jemand blöd kommt, machen wir auf „senile alte Opas“ und sind fein raus.
Die liebe Jana hat seinerzeit („ihrerzeit“?) während des Tierarzt-Studiums in München als Komparsin in einem Film mitgespielt:
Da sie selbst nie nachgeschaut hat, ob sie im Film auch tatsächlich zu sehen ist, habe ich dieses Vorhaben jetzt in Angriff genommen und den Film gekauft.
Heute oder morgen werden wir auf Spurensuche gehen, auch wenn der Film ggf. schwer zu konsumieren ist.
Gestern für 13 Euro im Marktkauf Göppingen erstanden:
Ein Dressingsprayer.
Das ist eine Sprühdose in die Essig eingefüllt wird, dann ein paar mal kurz aufpumpen und anschließend auf den Salat sprühen.
Der Vorteil zum bloßen Drüberleeren von Essig ist, dass weniger Essig auf die Salatblätter kommt und dass der Essig gleichmäßiger verteilt ist.
Ich liebe ja Essig, aber nach einem ersten Test gestern habe ich zum ersten mal im Leben tatsächlich auch den Salat herausgeschmeckt und nicht nur den Essig.
Sehr empfehlenswert.
Bildergalerie
Nachfolgend noch ein paar Bilder vom Gerät.
Ende.
Gestern spontan den zweiten Hundekorb verkehrtherum über den ersten Hundekorb gelegt, während die Jara grad drin lag:
Macht eine super Hundehöhle:
Ich glaube ihr hat’s gefallen.
Sollte ich mir patentieren lassen, falls es so was nicht eh‘ schon gibt.
Ihr kennt doch bestimmt diese praktischen Wasserhähne namens „Einhebelmischer„:
Also ein einzelner Hebel um zwischen warm und kalt zu wechseln.
Theoretisch.
Tatsächliche Funktionsweise
Praktisch sieht das bei den bisher von mir erlebten Wasserhähnen an Duschen und Waschbecken ungefähr so aus:
Es gibt einen großen Bereich in dem das Wasser eiskalt herausströmt, und es gibt einen Bereich in dem das Wasser kochend heiß herausströmt.
Dazwischen gibt es einen klitzekleinen Bereich in dem das Wasser angenehm für mich ist.
Interessanterweise ist dieser Bereich nicht genau in der Mitte sondern meist irgendwo „versetzt“ angeordnet. Je nach dem aus welcher Richtung ich den Hebel bewege ist der Bereich scheinbar auch an anderen Stellen.
Beispielsweise wenn ich den Hebel von links nach rechts bewege ist der angenehme grüne Bereich wie in obigem Bild; komme ich von rechts nach links ist der Bereich an einer ganz anderen Stelle:
Gewünschte Funktionsweise
Mein Wunsch wäre ein Wasserhahn, dessen blauer, roter und grüner Bereich nahtlos linear ineinander übergeht.
Von eiskalt über lauwarm, warm, wärmer, heiß, jeweils sanft und unmerklich die Stufen durchlaufen. Und zwar aus beiden Richtungen kommend.
So was habe ich (bewusst) bisher noch nie erlebt.
Mögliche Gründe
Mir fallen ein paar Gründe ein, warum es so einen Wasserhahn nicht gibt:
Sind Flaschner oder Produktdesigner, z.B. von Grohe hier als Leser anwesend?