Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
C#-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
public override void DropPanel(BaseWindowPanel droppedPanel, DropType dropType) { BaseWindowPanel newParent; switch (dropType) { case DropType.Top: newParent = new VerticalWindowPanel() { BottomContent = this, TopContent = droppedPanel, }; break; case DropType.Bottom: newParent = new VerticalWindowPanel() { BottomContent = droppedPanel, TopContent = this }; break; // Noch ein paar andere cases nach ähnlichem Prinzip! default: return; } (Parent as ContentControl).Content = newParent; } |
C#-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
public partial class VerticalWindowPanel : BaseWindowPanel { // Eigenschaften public object TopContent { // TopContentControl ist vom Typ System.Windows.Controls.ContentControl get { return TopContentControl?.Content; } set { TopContentControl.Content = value; } } public object BottomContent { // BottomContentControl ist vom Typ System.Windows.Controls.ContentControl get { return BottomContentControl?.Content; } set { BottomContentControl.Content = value; } } // Anderer Code } |
Lass solche persönlichen Angriffe lieber bleiben, meine sind härter.
... und diese Signatur kürzer!
- übersichtlicher
- logischer
- verständlicher
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »CeDoMain« (06.07.2016, 01:39)
Lass solche persönlichen Angriffe lieber bleiben, meine sind härter.
... und diese Signatur kürzer!
- übersichtlicher
- logischer
- verständlicher
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Toemsel« (05.07.2016, 15:08)
Zitat
Der Assistent für verwaltetes Debugging ""NotMarshalable"" hat ein Problem in ""C:\Users\Test\Downloads\Source\frontend\bin\Debug\Frontend.vshost.exe"" festgestellt.
Zusätzliche Informationen: Eine COM-Komponente, die nicht gemarshallt werden kann, wird von einem anderen Apartment/Kontext aus verwendet, als dem, in dem sie erstmals in die CLR eingetreten ist. Da die Komponente nicht gemarshallt werden kann, wird sie direkt vom aktuellen Apartment/Kontext aufgerufen. Dies kann Datenbeschädigung oder -verlust zur Folge haben, wenn die Komponente den gleichzeitigen Zugriff durch mehrere Threads nicht unterstützt. Die wahrscheinlichste Ursache ist eine fehlerhafte IMarshal-Implementierung seitens der COM-Komponente.
Also ich konnte den Code problemlos durchlaufen, allerdings kriege ich andere, seltsame Exceptions:
Zitat
Der Assistent für verwaltetes Debugging ""NotMarshalable"" hat ein Problem in ""C:\Users\Test\Downloads\Source\frontend\bin\Debug\Frontend.vshost.exe"" festgestellt.
Zusätzliche Informationen: Eine COM-Komponente, die nicht gemarshaBellt werden kann, wird von einem anderen Apartment/Kontext aus verwendet, als dem, in dem sie erstmals in die CLR eingetreten ist. Da die Komponente nicht gemarshallt werden kann, wird sie direkt vom aktuellen Apartment/Kontext aufgerufen. Dies kann Datenbeschädigung oder -verlust zur Folge haben, wenn die Komponente den gleichzeitigen Zugriff durch mehrere Threads nicht unterstützt. Die wahrscheinlichste Ursache ist eine fehlerhafte IMarshal-Implementierung seitens der COM-Komponente.
Kriegst du die auch?
Zitat
> PresentationFramework.dll!MS.Internal.PrePostDescendentsWalker<System.Windows.TreeChangeInfo>._VisitNode(System.Windows.DependencyObject d, bool visitedViaVisualTree) Unbekannt
PresentationFramework.dll!System.Windows.DescendentsWalker<System.Windows.TreeChangeInfo>.WalkLogicalChildren(System.Windows.FrameworkElement feParent, System.Windows.FrameworkContentElement fceParent, System.Collections.IEnumerator logicalChildren) Unbekannt
PresentationFramework.dll!System.Windows.DescendentsWalker<System.Windows.TreeChangeInfo>.WalkFrameworkElementLogicalThenVisualChildren(System.Windows.FrameworkElement feParent, bool hasLogicalChildren) Unbekannt
PresentationFramework.dll!System.Windows.DescendentsWalker<System.Windows.TreeChangeInfo>.IterateChildren(System.Windows.DependencyObject d) Unbekannt
PresentationFramework.dll!System.Windows.DescendentsWalker<System.Windows.TreeChangeInfo>._VisitNode(System.Windows.DependencyObject d, bool visitedViaVisualTree) Unbekannt
PresentationFramework.dll!MS.Internal.PrePostDescendentsWalker<System.Windows.TreeChangeInfo>._VisitNode(System.Windows.DependencyObject d, bool visitedViaVisualTree) Unbekannt
PresentationFramework.dll!System.Windows.DescendentsWalker<System.Windows.TreeChangeInfo>.WalkLogicalChildren(System.Windows.FrameworkElement feParent, System.Windows.FrameworkContentElement fceParent, System.Collections.IEnumerator logicalChildren) Unbekannt
PresentationFramework.dll!System.Windows.DescendentsWalker<System.Windows.TreeChangeInfo>.WalkFrameworkElementLogicalThenVisualChildren(System.Windows.FrameworkElement feParent, bool hasLogicalChildren) Unbekannt
PresentationFramework.dll!System.Windows.DescendentsWalker<System.Windows.TreeChangeInfo>.IterateChildren(System.Windows.DependencyObject d) Unbekannt
PresentationFramework.dll!System.Windows.DescendentsWalker<System.Windows.TreeChangeInfo>._VisitNode(System.Windows.DependencyObject d, bool visitedViaVisualTree) Unbekannt
PresentationFramework.dll!MS.Internal.PrePostDescendentsWalker<System.Windows.TreeChangeInfo>._VisitNode(System.Windows.DependencyObject d, bool visitedViaVisualTree) Unbekannt
PresentationFramework.dll!System.Windows.DescendentsWalker<System.Windows.TreeChangeInfo>.WalkLogicalChildren(System.Windows.FrameworkElement feParent, System.Windows.FrameworkContentElement fceParent, System.Collections.IEnumerator logicalChildren) Unbekannt
PresentationFramework.dll!System.Windows.DescendentsWalker<System.Windows.TreeChangeInfo>.WalkFrameworkElementLogicalThenVisualChildren(System.Windows.FrameworkElement feParent, bool hasLogicalChildren) Unbekannt
PresentationFramework.dll!System.Windows.DescendentsWalker<System.Windows.TreeChangeInfo>.IterateChildren(System.Windows.DependencyObject d) Unbekannt
PresentationFramework.dll!System.Windows.DescendentsWalker<System.Windows.TreeChangeInfo>._VisitNode(System.Windows.DependencyObject d, bool visitedViaVisualTree) Unbekannt
PresentationFramework.dll!MS.Internal.PrePostDescendentsWalker<System.Windows.TreeChangeInfo>._VisitNode(System.Windows.DependencyObject d, bool visitedViaVisualTree) Unbekannt
PresentationFramework.dll!System.Windows.DescendentsWalker<System.Windows.TreeChangeInfo>.WalkLogicalChildren(System.Windows.FrameworkElement feParent, System.Windows.FrameworkContentElement fceParent, System.Collections.IEnumerator logicalChildren) Unbekannt
PresentationFramework.dll!System.Windows.DescendentsWalker<System.Windows.TreeChangeInfo>.WalkFrameworkElementLogicalThenVisualChildren(System.Windows.FrameworkElement feParent, bool hasLogicalChildren) Unbekannt
PresentationFramework.dll!System.Windows.DescendentsWalker<System.Windows.TreeChangeInfo>.IterateChildren(System.Windows.DependencyObject d) Unbekannt
PresentationFramework.dll!System.Windows.DescendentsWalker<System.Windows.TreeChangeInfo>._VisitNode(System.Windows.DependencyObject d, bool visitedViaVisualTree) Unbekannt
C#-Quelltext |
|
1 2 3 4 5 6 7 8 |
newParent = new VerticalWindowPanel() { BottomContent = this, TopContent = droppedPanel }; break; (Parent as ContentControl).Content = newParent; |
C#-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
case DropType.Top: newParent = new VerticalWindowPanel() { TopContent = droppedPanel, }; break; . . . if (Windowed) newParent.Windowed = true; else { (Parent as ContentControl).Content = newParent; if (newParent.GetType().Equals(typeof(VerticalWindowPanel)) && dropType == DropType.Top) ((VerticalWindowPanel)newParent).BottomContent = this; } |
Beispiel? Ich habe Events, aber die sind in einem anderen Teil des Codes und feuern sich nicht selbst wieder... (Kannst du mir per PM beantworten. )es liegt an den Events, die du abfängst und wieder feuerst
Wie bereits in der PM erklärt: Der Fehler liegt an der Zuweisung: [...] Dadurch dreht sich der Code im Kreis.
C#-Quelltext |
|
1 2 3 4 5 6 7 8 |
newParent = new VerticalWindowPanel() { BottomContent = this, TopContent = droppedPanel }; break; (Parent as ContentControl).Content = newParent; |
Lass solche persönlichen Angriffe lieber bleiben, meine sind härter.
... und diese Signatur kürzer!
- übersichtlicher
- logischer
- verständlicher
Werbeanzeige