Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Inventor .NET
  COM-Kontext?

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  COM-Kontext? (2401 mal gelesen)
Chris 31
Mitglied
Konstrukteur und Mädchen für alles


Sehen Sie sich das Profil von Chris 31 an!   Senden Sie eine Private Message an Chris 31  Schreiben Sie einen Gästebucheintrag für Chris 31

Beiträge: 575
Registriert: 23.04.2013

Inventor 2015 Professional
Windows 7 64 bit
16GB RAM
nVidia Quadro 600

erstellt am: 17. Dez. 2014 15:19    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo, ich habe das Problem, dass mein Programm immer nach einiger Durchlaufzeit mit folgender Fehlermeldung abbricht:


DisconnectedContext wurde erkannt.
Message: Folgender Fehler beim Übergang in den COM-Kontext 0x2004d80 für diesen RuntimeCallableWrapper: Systemaufruf ist fehlgeschlagen. (Ausnahme von HRESULT: 0x80010100 (RPC_E_SYS_CALL_FAILED)). Dieser tritt in der Regel auf, da der COM-Kontext 0x2004d80, in dem dieser RuntimeCallableWrapper erstellt wurde, getrennt wurde oder aufgrund eines anderen Vorgangs ausgelastet ist. Die Schnittstellen werden aus dem aktuellen COM-Kontext (COM-Kontext 0x2004b30) freigegeben. Dies kann Datenbeschädigung oder -verlust zur Folge haben. Um dieses Problem zu vermeiden, müssen Sie sicherstellen, dass alle COM-Kontexte/Apartments/Threads so lange beibehalten werden und für den Kontextübergang verfügbar sind, bis die Anwendung alle RuntimeCallableWrappers, die in ihnen enthaltene COM-Komponenten darstellen, vollständig verarbeitet hat.


Das Programm kopiert Baugruppen inklusive zugehörige Komponenten in einen Ordner und öffnet dann die Baugruppe. Dann werden die Komponenten ersetzt und, nach einer Excelliste, in der Größe angepasst. Dann wird die Baugruppe aktualisiert und gespeichert. Dann geht es an die nächste Baugruppe.
Funktioniert auch ganz gut und lief bis jetzt eigentlich immer reibungslos.
Nur seit heute, nachdem ich das Programm erweitert habe um höhere Baugruppennummern zu erfassen, kommt ständig diese Meldung.

Die Suche im Netz hat mich leider nicht wirklich weiter gebracht. Vielleicht kann mir ja hier jemand helfen und mir sagen, wie ich das umgehen kann.

------------------
MFG

Chris

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

rkauskh
Moderator
Dipl.-Ing. (FH) Versorgungstechnik




Sehen Sie sich das Profil von rkauskh an!   Senden Sie eine Private Message an rkauskh  Schreiben Sie einen Gästebucheintrag für rkauskh

Beiträge: 2166
Registriert: 15.11.2006

Windows 10 x64, AIP 2022

erstellt am: 19. Dez. 2014 13:39    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Chris 31 10 Unities + Antwort hilfreich

Hallo

Meist tritt das Problem auf, wenn zu viele Inventorinstanzen parallel aufgerufen werden (mal im Taskmanager zur Laufzeit prüfen) oder wenn Instanzen nicht sauber freigegeben werden. Nach jedem Durchlauf sollte die Baugruppe nicht nur geschlossen, sondern auch alle erzeugten COM-Objekte freigegeben werden. Schau dir mal

Code:
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(obj)

an. Damit solltest du möglichst alle Objekte die nicht mehr im nächsten Durchlauf benötigt werden, freigegeben.

Hoffe es hilft.

EDIT: Kontrollier auch mal deinen RAM-Verbrauch zur Laufzeit. Eventuell schmiert dir die aktuelle Inventorinstanz wegen Speichermangel ab.

------------------
MfG
Ralf

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Chris 31
Mitglied
Konstrukteur und Mädchen für alles


Sehen Sie sich das Profil von Chris 31 an!   Senden Sie eine Private Message an Chris 31  Schreiben Sie einen Gästebucheintrag für Chris 31

Beiträge: 575
Registriert: 23.04.2013

Inventor 2015 Professional
Windows 7 64 bit
16GB RAM
nVidia Quadro 600

erstellt am: 19. Dez. 2014 14:56    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Das Problem ist, dass ich die COM-Objekte noch weiter benötige. Hatte schon geschaut, ob vielleicht mehrere Instanzen laufen. Ist aber nicht der Fall.
Hab auch den RAM in Verdacht, aber daran kann ich ja leider nicht viel ändern. Hab es mittlerweile auch in den Griff bekommen.
Danke dir trotzdem erstmal

------------------
MFG

Chris

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

rkauskh
Moderator
Dipl.-Ing. (FH) Versorgungstechnik




Sehen Sie sich das Profil von rkauskh an!   Senden Sie eine Private Message an rkauskh  Schreiben Sie einen Gästebucheintrag für rkauskh

Beiträge: 2166
Registriert: 15.11.2006

Windows 10 x64, AIP 2022

erstellt am: 31. Dez. 2014 09:42    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Chris 31 10 Unities + Antwort hilfreich

Hallo

Von welchen Größenordnungen reden wir eigentlich? Wie viele Baugruppen stehen in der Excelliste die noch funktioniert und ungefähr ab welcher Anzahl geht's schief? Der Aufgabenplaner von Inventor startet den von ihm benutzten Apprenticeserver vermutlich auch nicht ohne Grund nach z.B. ca. 50 migrierten Dateien neu. 

------------------
MfG
Ralf

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Chris 31
Mitglied
Konstrukteur und Mädchen für alles


Sehen Sie sich das Profil von Chris 31 an!   Senden Sie eine Private Message an Chris 31  Schreiben Sie einen Gästebucheintrag für Chris 31

Beiträge: 575
Registriert: 23.04.2013

Inventor 2015 Professional
Windows 7 64 bit
16GB RAM
nVidia Quadro 600

erstellt am: 07. Jan. 2015 07:20    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Guten Morgen Ralf,

ein frohes Neues erstmal.
Die Fehlermeldung kommt leider immer nach unterschiedlich vielen Dateien. Mal läuft das Programm bis über 45 Dateien durch, mal geht es schon bei 21 in die Knie. In der Excelliste stehen über Hundert Baugruppen, wobei nach ca. 60 ein Wechsel zu einer anderen Baugruppe stattfindet.

------------------
MFG

Chris

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

daywa1k3r
Moderator
Softwareentwickler




Sehen Sie sich das Profil von daywa1k3r an!   Senden Sie eine Private Message an daywa1k3r  Schreiben Sie einen Gästebucheintrag für daywa1k3r

Beiträge: 3497
Registriert: 01.08.2002

Desktop: 3.3GHz;8GB;SSD OCZ Vertex 3;Gainward Phantom GTX570
Laptop: Alienware m17x
Win7, Inventor2012

erstellt am: 07. Jan. 2015 08:49    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Chris 31 10 Unities + Antwort hilfreich

Hi, schau dir mal in dem task manager die Speicherressourcen an während dein Programm läuft. Wenn der Speicher voll wird stockt eh das ganze System. Und falls das wirklich so ist, musst du eben schauen deine Objekte nach Benutzung explizit frei zu geben.

EDIT: Ich sehe Ralf hat das schon im ersten Post erwähnt - kannst du den vollen Speicher sicher ausschließen?

------------------
Grüße Igor

FX64 Software Solutions - Inventor Tools
FX64 LambdaSpect - Lichtsimulation mit Autodesk Inventor

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Chris 31
Mitglied
Konstrukteur und Mädchen für alles


Sehen Sie sich das Profil von Chris 31 an!   Senden Sie eine Private Message an Chris 31  Schreiben Sie einen Gästebucheintrag für Chris 31

Beiträge: 575
Registriert: 23.04.2013

Inventor 2015 Professional
Windows 7 64 bit
16GB RAM
nVidia Quadro 600

erstellt am: 07. Jan. 2015 08:56    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hi Igor,
ja das mit dem Speicher konnte ich mittlerweile komplett ausschließen. Von den 16 GB die insgesamt da sind, sind bei Fehlermeldung noch gute 12,5 GB verfügbar. Prozessorauslastung ist während des gesamten Programmlaufs zwischen 6 und 10 %.

------------------
MFG

Chris

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Chris 31
Mitglied
Konstrukteur und Mädchen für alles


Sehen Sie sich das Profil von Chris 31 an!   Senden Sie eine Private Message an Chris 31  Schreiben Sie einen Gästebucheintrag für Chris 31

Beiträge: 575
Registriert: 23.04.2013

Inventor 2015 Professional
Windows 7 64 bit
16GB RAM
nVidia Quadro 600

erstellt am: 09. Jan. 2015 08:28    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo nochmal,

gibt es denn eine Möglichkeit, diesen Fehler abzufangen? Ich hab es jetzt mit try...catch probiert um Inventor wieder zu instanzieren, aber das funktioniert leider nicht. Gibt es da vielleicht eine andere Möglichkeit?

------------------
MFG

Chris

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

daywa1k3r
Moderator
Softwareentwickler




Sehen Sie sich das Profil von daywa1k3r an!   Senden Sie eine Private Message an daywa1k3r  Schreiben Sie einen Gästebucheintrag für daywa1k3r

Beiträge: 3497
Registriert: 01.08.2002

Desktop: 3.3GHz;8GB;SSD OCZ Vertex 3;Gainward Phantom GTX570
Laptop: Alienware m17x
Win7, Inventor2012

erstellt am: 09. Jan. 2015 09:28    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Chris 31 10 Unities + Antwort hilfreich

Ohne zu sehen wie du das versuchst ist es schwer zu sagen. Ich würde es so versuchen (Biespiel mit Inventor Objekt - mit Apprentice sollte es das Gleiche sein). Ein neue Klasse in dein Projekt hinzufügen und diesen Code Einfügen:

Code:

using System;
using System.Windows.Forms;

namespace CAD // namespace an dein namespace anpassen
{
    public static class CAD
    {
        private static Inventor.Application invApp = null;

        public static Inventor.Application InvApp
        {
            get
            {
                try
                {
                    if (invApp == null) // Hier sollte die Ausnahme passieren wenn der Server unerwartet getrennt wurde
                        invApp = System.Runtime.InteropServices.Marshal.GetActiveObject("Inventor.Application") as Inventor.Application;
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Problem mit Inventor Application" + System.Environment.NewLine + ex.InnerException.ToString (), "Inventor läuft nicht", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    // Hier kannst du auf die Ausnahme reagieren, invApp neu zuweisen...
                    // return null; // ... oder auch nicht...
                }
                return invApp;
            }
        }
    }
}


Anschließend sollen alle Zugriffe auf das Inventor / Apprentice Objekt  über diese Klasse stattfinden. Vielleicht läuft er dann so rein in die Try/Catch.

------------------
Grüße Igor

FX64 Software Solutions - Inventor Tools
FX64 LambdaSpect - Lichtsimulation mit Autodesk Inventor

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Chris 31
Mitglied
Konstrukteur und Mädchen für alles


Sehen Sie sich das Profil von Chris 31 an!   Senden Sie eine Private Message an Chris 31  Schreiben Sie einen Gästebucheintrag für Chris 31

Beiträge: 575
Registriert: 23.04.2013

Inventor 2015 Professional
Windows 7 64 bit
16GB RAM
nVidia Quadro 600

erstellt am: 09. Jan. 2015 11:25    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Danke Igor,
ich werde mal versuchen, das in vb.net umzusetzen.

------------------
MFG

Chris

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Chris 31
Mitglied
Konstrukteur und Mädchen für alles


Sehen Sie sich das Profil von Chris 31 an!   Senden Sie eine Private Message an Chris 31  Schreiben Sie einen Gästebucheintrag für Chris 31

Beiträge: 575
Registriert: 23.04.2013

Inventor 2015 Professional
Windows 7 64 bit
16GB RAM
nVidia Quadro 600

erstellt am: 14. Jan. 2015 11:58    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo nochmal,

gibt es eine Möglichkeit, den Speicher während der Laufzeit des Programms wieder zu entleeren, ohne Inventor zu schließen und neu zu starten?

Das was Igor vorgeschlagen hat, funktioniert so bei mir leider nicht     

------------------
MFG

Chris

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

daywa1k3r
Moderator
Softwareentwickler




Sehen Sie sich das Profil von daywa1k3r an!   Senden Sie eine Private Message an daywa1k3r  Schreiben Sie einen Gästebucheintrag für daywa1k3r

Beiträge: 3497
Registriert: 01.08.2002

Desktop: 3.3GHz;8GB;SSD OCZ Vertex 3;Gainward Phantom GTX570
Laptop: Alienware m17x
Win7, Inventor2012

erstellt am: 14. Jan. 2015 12:36    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Chris 31 10 Unities + Antwort hilfreich

Das ist eine einfache statische Eigenschaft - da kann eigentlich nichts schief gehen. Wahrscheinlich ein Verständnisproblem...

------------------
Grüße Igor

FX64 Software Solutions - Inventor Tools
FX64 LambdaSpect - Lichtsimulation mit Autodesk Inventor

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Chris 31
Mitglied
Konstrukteur und Mädchen für alles


Sehen Sie sich das Profil von Chris 31 an!   Senden Sie eine Private Message an Chris 31  Schreiben Sie einen Gästebucheintrag für Chris 31

Beiträge: 575
Registriert: 23.04.2013

Inventor 2015 Professional
Windows 7 64 bit
16GB RAM
nVidia Quadro 600

erstellt am: 14. Jan. 2015 12:39    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Naja, zumindest läuft er auch mit der Methode nicht in den Try-Catch.

Aber vielleicht habe ich auch einen Fehler bei der Umsetzung in VB gemacht.

------------------
MFG

Chris

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz