| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Programmfehler (2254 mal gelesen)
|
Silvan01 Mitglied
Beiträge: 128 Registriert: 28.04.2009 AutoCAD Civil 2009 AutoCAD Civil 2010 Visual Studio 2008
|
erstellt am: 10. Dez. 2009 11:23 <-- editieren / zitieren --> Unities abgeben:
Hallo Zusammen, ich habe eine Applikation mit VB.Net Programmiert. Im Programm werden einige Objekte in ein Selectionset gepackt und anschließend folgendermaßen überprüft: Code: If TrAct.GetObject(ObjIDs(C2), OpenMode.ForRead, True, True).GetType.Equals(GetType(BlockReference)) Then Dim tdbobj = TrAct.GetObject(ObjIDs(C2), OpenMode.ForRead, True, True) If tdbobj IsNot Nothing Then brefs(C) = TryCast(tdbobj, BlockReference) End If
Ich bekomme an der markierten Stelle allerdings folgende/-n Error/Exception: eInvalidContext bei Autodesk.AutoCAD.DatabaseServices.TransactionManager.GetObjectInternal(AcDbTransactionManager* pTM, ObjectId id, OpenMode mode, Boolean openErased, Boolean forceOpenOnLockedLayer) bei Autodesk.AutoCAD.DatabaseServices.Transaction.GetObject(ObjectId id, OpenMode mode, Boolean openErased, Boolean forceOpenOnLockedLayer) bei meiner Funktion Das Problem: Der Fehler tritt bei den gleichen Gegebenheiten nicht immer auf. Und Wenn er Auftritt dann auch nicht unbedingt bei der gleichen ObjektID. Die ObjektIDs, bei der der Error auftritt, habe ich schon angesehen und konnte keinene Fehler entdecken. Eine weiterer Fehler tritt ab und zu (eher selten) bei einer Zeile in der ich einen "Save As"-Dialog aufrufe und das Ergebnis abfrage auf: Code: If Save.SaveFileDialog.ShowDialog = DialogResult.OK then
Hab den Error Code jetzt nach langen Probieren immer noch nicht bekommen (wie gesagt tritt sehr selten auf) um ihn jetzt zu zeigen. Aber kann man bei dem SaveFileDialog was falsch machen oder muss man noch etwas weiteres beachten. Grüße und Danke im Vorraus für Eure Hilfe Silvan Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 10. Dez. 2009 11:54 <-- editieren / zitieren -->
Hi Silvan, bau den Code mal so um: Code: Dim tDbObj as DatabaseService.DBObject = Nothing Try Dim tDbObj = TrAct.GetObject(ObjIDs(C2), OpenMode.ForRead, True, True) if (tDbObj isnot Nothing) AndAlso (tDbObj.GetType.Equals(getType(BlockReference))) Then 'und hier jetzt, was auch immer Du damit machen willst end if Catch ex as System.Exception Debug.Print(ObjIDs(C2).ToString) 'und auf diese Zeile einen Breakpoint setzen 'hier kannst Du dann 'ObjIDs(C2)' im Überwachungsfenster prüfen End Try
Das mögliche Problem in Deinem Code ist, dass Du mit ...GetType darauf hingreifst, bevor Du noch geprüft hast, ob Nothing retourniert wurde. Bei dem Speichern-Dialog Problem würde ich ähnlich vorgehen. Es zwischen Try-Catch-End Try setzen und möglichst viel Info aus der Exception ablesen versuchen. Wenn Du dabei nicht im Debug-Modus bist, dann halt in ein ASCII-File schreiben lassen.
- alfred - ------------------ www.hollaus.at |
Silvan01 Mitglied
Beiträge: 128 Registriert: 28.04.2009 AutoCAD Civil 2009 AutoCAD Civil 2010 Visual Studio 2008
|
erstellt am: 14. Dez. 2009 10:45 <-- editieren / zitieren --> Unities abgeben:
Hallo Alfred, habe den Fehler mit dem Savefiledialog lösen können. War nur falsch interpretiert der Fehler lag wo anders. Ich hab auch mal den Fehler mit dem eInvalidContext umgebaut. Kann aber immer noch keinen Fehler bei der ObjectID finden und den Error versteh ich leider auch nicht bzw. weiß nicht worauf ich noch achten muss. (Siehe Screenshots) Außerdem bekomme ich ab und zu auch noch einen anderen Fehler: Die Error Nachricht: "Es wurde versucht, im geschützten Speicher zu lesen oder zu schreiben. Dies ist häufig ein Hinweis darauf, dass anderer Speicher beschädigt ist." Stacktrace: bei Autodesk.AutoCAD.ApplicationServices.TransactionManager.FlushGraphics() bei Autodesk.AutoCAD.ApplicationServices.AppTransaction.Commit() bei ASPT.ASPT_Main_Userform.Main() in ... Dieser Fehler tritt bei einem
Code: Transaction.Commit
auf. Wobei ich mit dem FlushGraphics nichts anfangen kann Danke für eure Hilfe!!! Grüße Silvan Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Silvan01 Mitglied
Beiträge: 128 Registriert: 28.04.2009 AutoCAD Civil 2009 AutoCAD Civil 2010 Visual Studio 2008
|
erstellt am: 14. Dez. 2009 14:40 <-- editieren / zitieren --> Unities abgeben:
Hallo Nochmal, in meinem Programm geht es darum aus Blockreferenzen Punkte zu finden. Ich bin beim Visual Studio mal auf das Output-Fenster gestoßen und habe bemerkt, dass die Punkte bzw. 'ein paar' Objekte (ca. 2000 Stück ) nicht .disposed waren. Seid dem ich das geändert habe kam kein Error mehr. Grüße Silvan Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 15. Dez. 2009 02:04 <-- editieren / zitieren -->
Hi Silvan, nur um (für mich) sicherzugehen, dass ich nichts überlesen habe! Mit diesem:
>> Seid dem ich das geändert habe kam kein Error mehr meinst Du, dass in obigen Einträgen keine offenen Probleme mehr bestehen? - alfred - ------------------ www.hollaus.at |
| Praktikum Versuch - Muster- und Vorrichtungsbau (WiSe 24/25) | Jedes Werkzeug kann immer nur so gut sein wie der Mensch, der dahintersteckt. Deshalb suchen wir bei der Festool Group Mitarbeitende, die gemeinsam mit ihren 3.000 Kolleginnen und Kollegen weltweit etwas bewegen wollen. Tauche ein in unsere Welt ? und erlebe, wie stolz es macht, in einem Familienunternehmen die besten Elektrowerkzeuge der Welt zu bauen.
Unterstütze gemeinsam mit den Kolleg:innen ... | Anzeige ansehen | Praktikum |
|
Silvan01 Mitglied
Beiträge: 128 Registriert: 28.04.2009 AutoCAD Civil 2009 AutoCAD Civil 2010 Visual Studio 2008
|
erstellt am: 15. Dez. 2009 08:07 <-- editieren / zitieren --> Unities abgeben:
|
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|