Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi COM interop mit einer C# Library mit WPF und COM (https://www.delphipraxis.net/166199-com-interop-mit-einer-c-library-mit-wpf-und-com.html)

generic 2. Feb 2012 16:37

COM interop mit einer C# Library mit WPF und COM
 
Liste der Anhänge anzeigen (Anzahl: 1)
Moin, folgendes Problem hat sich bei uns ergeben:

Ziel
Erstellung eines COM-Objektes, welches WPF Fenster anzeigen kann. Diese Fenster sollen von anderen Programmen via COM eingebunden werden und angezeigt werden können.
Dazu wurde eine WPF-Library erstellt, welche über eine Klasse einen Methodenaufruf via COM nach außen gibt. Dieser Methodenaufruf zeigt bei Aufruf ein Fenster an.

Problem
Wird diese COM-Objekt in einer Delphi Win32 Anwendung instanziiert und anschließend die „ZeigeFenster an“ Methode aufgerufen, dann beendet sich die Delphi Anwendung sofort.
Wird die gleiche Tätigkeit z.B. in Word.VBA gemacht, wird das Fenster problemlos anzeigt.

Weitere Informationen
Wenn die Anwendung im WinDgb gestartet wird. Bricht diese mit einer Exception ab.
Code:
(2b4.244): Unknown exception - code c0000090 (first chance)
  • Delphi 2007
  • Betriebssystem Windows XP SP3
  • C#
  • Visual Studio 2010

Die Beispiele liegen bei. Der vollständige Windbg-Dump ebenfalls.

Fragen
Was verursacht den Absturz?
Wie kann dieser vermieden werden?

Bernhard Geyer 2. Feb 2012 16:41

AW: COM interop mit einer C# Library mit WPF und COM
 
Tritt der Fehler auch unter Win7 auf?

c0000090? Errinert an eine Gleitkommaexception? Hilft es was die 8087-Exception-Mask zu setzen?

generic 6. Feb 2012 14:36

AW: COM interop mit einer C# Library mit WPF und COM
 
Streng genommen müsste das eine div by 0 Exception sein.
Das mit der Mask überschreitet meine Fähigkeiten mit dem windgb umzugehen.
Win7 habe ich nicht probiert, da WinXp die Plattform ist.

Bernhard Geyer 6. Feb 2012 14:48

AW: COM interop mit einer C# Library mit WPF und COM
 
[QUOTE=generic;1149479]Das mit der Mask überschreitet meine Fähigkeiten mit dem windgb umzugehen.

Brauchst du auch nicht.

Ergänz in deinem Code mal folgende Zeile:

Delphi-Quellcode:
  SetExceptionMask([exInvalidOp, exDenormalized, exZeroDivide,
                   exOverflow, exUnderflow, exPrecision]);
Bei mir haben Koponenten die OpenGL verwenden mit dieser Exception-Mask nicht mehr "gekracht". Dürfte bei DirectX-Komponenen (wie WPF ja ist) auch so sein das man eigentlich davon ausgeht das man solche "Div by 0" nicht als harte Exception ignoriert (Ist auch z.B. bei Spielen egal ob mal ein Pixel für 1 ms mal die falsche Farbe hat).

Zitat:

Zitat von generic (Beitrag 1149479)
Win7 habe ich nicht probiert, da WinXp die Plattform ist.

WPF und XP - Supper Kombi. Sind mittlerweile die XP-Grafikkartentreiber schon so gut das es hier nicht eh permanent kracht?

generic 7. Feb 2012 08:23

AW: COM interop mit einer C# Library mit WPF und COM
 
Guter Tipp. Das mit der ExceptionMask hat geholfen.

Danke


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:52 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz