![]() |
TJumpList ist recht eigenwillig
Hallo,
ich verwende die Komponente und fülle sie im Quelltext mit einem Task und zwei Nutzerkategorien mit wechselnden Einträgen. Dabei kommt aber störend oft die Fehlermeldung "JumpList-Exception: Fehler -2147023721: Neue Sprungliste wird übergeben." Damit es mehr Spaß macht ist der Fehler zudem absolut nicht reproduzierbar. Einmal funktioniert es, bei den nächsten Läufen auch oder aber die Fehlermeldung kommt. Die natürlich auch schon beim ersten Mal kommen kann. Scheinbar passiert es nur öfter außerhalb der IDE und das Erstellen der Tasklist ist wohl sicher. Weil das nicht reicht, wechselt die Stelle noch ständig. Mal beim Erzeugen eines Items, mal beim Setzen einer Eigenschaft davon. Ob sonstige Einstellungen im Objektinspektor oder im Quelltext gesetzt werden spielt keine Rolle. Google liefert nichts brauchbares, Bing absolut nichts brauchbares. Hat eventuell jemand schon Erfahrungen mit solchen Problemen und kann vielleicht sogar dabei helfen? |
AW: TJumpList ist recht eigenwillig
Hast du mal nach dem entsprechenden Hex-Code 0x80070497 gesucht? In Verbindung mit HRESULT oder "jump list" gibt das einige Ergebnisse. Ob da brauchbare dabei sind, kann ich nicht wirklich beurteilen.
Grüße Dalai |
AW: TJumpList ist recht eigenwillig
Danke für die Mühe, aber wie gehabt, bestenfalls die Erwähnung eines Fehlers ohne Gründe oder gar Lösungsmöglichkeiten.
|
AW: TJumpList ist recht eigenwillig
Hast du einen Stacktrace zu einem solchen Fehler?
|
AW: TJumpList ist recht eigenwillig
So etwas?
[00A43822] Vcl.JumpList.TCustomJumpList.CheckUpdateError (Line 906, "Vcl.JumpList.pas" + 8) + $36 [00A43AE1] Vcl.JumpList.TCustomJumpList.UpdateList (Line 960, "Vcl.JumpList.pas" + 45) + $23 [00A4299A] Vcl.JumpList.TCustomJumpList.DoAutoRefresh (Line 545, "Vcl.JumpList.pas" + 1) + $0 [00A42E38] Vcl.JumpList.TCustomJumpList.OnListChange (Line 657, "Vcl.JumpList.pas" + 0) + $0 [00A422CE] Vcl.JumpList.TJumpCategories.Update (Line 371, "Vcl.JumpList.pas" + 3) + $5 [008CE0CB] System.Classes.TCollectionItem.Changed (Line 6193, "System.Classes.pas" + 3) + $4 [00A41CAA] Vcl.JumpList.TJumpCategoryItem.OnItemsChange (Line 207, "Vcl.JumpList.pas" + 0) + $2 [00A4243E] Vcl.JumpList.TJumpListCollection.Update (Line 416, "Vcl.JumpList.pas" + 3) + $5 [008CE426] System.Classes.TCollection.Changed (Line 6325, "System.Classes.pas" + 0) + $A [008CE7EA] System.Classes.TCollection.InsertItem (Line 6458, "System.Classes.pas" + 8) + $2 [008CE1E4] System.Classes.TCollectionItem.SetCollection (Line 6227, "System.Classes.pas" + 4) + $8 [008CE054] System.Classes.TCollectionItem.Create (Line 6170, "System.Classes.pas" + 1) + $6 [00A41D32] Vcl.JumpList.TJumpListItem.Create (Line 241, "Vcl.JumpList.pas" + 1) + $6 [008CE333] System.Classes.TCollection.Add (Line 6292, "System.Classes.pas" + 1) + $7 [00A49933] Unit1.TForm1.UndAb (Line 283, "Unit1.pas" + 12) + $19 [00A4B863] Unit1.TForm1.FormCreate (Line 614, "Unit1.pas" + 7) + $3 [009FAD09] Vcl.Forms.TCustomForm.DoCreate (Line 4160, "Vcl.Forms.pas" + 3) + $C [009FA8E4] Vcl.Forms.TCustomForm.AfterConstruction (Line 4043, "Vcl.Forms.pas" + 1) + $4 [00828D09] System.@AfterConstruction$qqrxp14System.TObject (Line 19684, "System.pas" + 2) + $5 [009FA8A0] Vcl.Forms.TCustomForm.Create (Line 4033, "Vcl.Forms.pas" + 36) + $2D [00A06C12] Vcl.Forms.TApplication.CreateForm (Line 11607, "Vcl.Forms.pas" + 13) + $B (00235E61) [00A56E61] Wirklich hilfreich ist das für mich aber nicht. In UpdateList habe ich nichts gesehen. Liegt wohl auch daran, dass man nicht weiß, wann der Fehler nun auftritt. Ich dachte, es könnte eventuell am Rechner liegen, aber in C# bekomme ich nicht mal gelegentlich einen Fehler. |
AW: TJumpList ist recht eigenwillig
Zitat:
Delphi-Quellcode:
Möglicher Bugfix Fehlerabfangen/-ignorieren:
function TCustomJumpList.CheckUpdateError(ErrNo: HRESULT; const Description: string): Boolean;
var LHandled: Boolean; begin Result := Succeeded(ErrNo); if not Result then begin LHandled := false; if Assigned(FOnListUpdateError) then FOnListUpdateError(Self, ErrNo, Description, LHandled); if not LHandled then raise EJumpListException.CreateFmt(SJumplistException, [ErrNo, Description]); end; end; OnListUpdateError und dort True zurückgeben. :duck: So, nun weiter zur eigentlichen Ursache....
Delphi-Quellcode:
Warum sagt das FDestinationList.CommitList denn nun "Nöööö"?
function TCustomJumpList.UpdateList: Boolean;
... begin ... if CheckUpdateError(FDestinationList.BeginList(LMaxSlots, IID_IObjectArray, LRemovedTasks), SJumplistErrorBeginlist) then begin ... Result := CheckUpdateError(FDestinationList.CommitList, SJumplistErrorCommitlist); usw. Da FDestinationList ein Interface ist und aus diesem Stückchen Code nicht erkennbar ist, was dahinter liegt ... am Enfachsten zur Laufzeit reindebuggen und schauen wo man landet. |
AW: TJumpList ist recht eigenwillig
Ich habe noch nicht nachgeschaut, das ist ins Blaue geraten:
Hast du mal versucht, das nicht im OnCreate des Formulars zu machen, sondern abgekoppelt, z.B. mit TThread.ForceQueue? |
AW: TJumpList ist recht eigenwillig
Zumindestens am Laden der DFM und Erstellungsreihenfolge wird es wohl nicht liegen.
OldCreateOrder gibt es nicht mehr, also muß OnCreate aus'm AfterConstruction kommen, nachdem alles aus der DFM fertig geladen und die FormInstanz erzeugt+verlinkt wurde. |
AW: TJumpList ist recht eigenwillig
Zitat:
|
AW: TJumpList ist recht eigenwillig
Zitat:
![]() Da der Fehler in der API auftritt, wirst du da auch im Debugger nicht viel sehen können. Es klingt ja so, als ob der Fehler zwar nicht jedes Mal auftritt, aber mit etwas probieren relativ schnell kommt, oder? Kannst du das auch in einem separaten Projekt reproduzieren, dass du hier zeigen könntest? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:47 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz