Autor
|
Thema: MDL Fehler in V8i (916 mal gelesen)
|
cdv Mitglied Freiberufler
Beiträge: 15 Registriert: 24.11.2011 Win V7 Prof 64 bit V8, V8i
|
erstellt am: 15. Jul. 2013 11:36 <-- editieren / zitieren --> Unities abgeben:
Eine Frage an MDL- Entwickler: Scheinbar tritt bei massenhaften Zugriffen auf die Oberfläche in der V8i (bei "pure" MDL- Programmen) ein Fehler auf - MicroStation friert komplett ein. Z.B. for (i=0; i<200000; i++) { percentcomplete = 100*(i+1)/200000; mdlDialog_completionBarUpdate (dbPStatus, "hallo", percentcomplete); } friert irgendwo "in der Mitte" ein. Dito bei Ausgabe über mdlOutput_message oder eine eigene Dialogbox. D.h. bei länger laufenden Prozessen ist ein Feedback an den Nutzer nicht möglich. Der Witz: mit V8 übersetzt läuft's - dann halt nur mit der "rustikalen" Oberfläche. Das sieht irgendwie so aus, dass Bentley hierbei ein Speicher, Handle oder sonstwas überläuft... Die Frage: Ist der Effekt bekannt und vor allem - zu umgehen? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
stark Moderator Dipl.Informatiker
Beiträge: 680 Registriert: 27.06.2001 MicroStation V8i auf Windows 7 + 8.1
|
erstellt am: 15. Jul. 2013 13:46 <-- editieren / zitieren --> Unities abgeben: Nur für cdv
Hab ich so nicht beobachtet, allerdings macht es m.E. auch wenig Sinn, die kompletten 200000 Nachrichten 'ausdrucken' zu lassen. Wenn ich mit solchen Mengen rechne, kann ich im Vorfeld schon definieren, das z.B. bloß jeder 2000. Wert überhaupt eine Änderungsnachricht bewirkt. Im Hintergrund muss nämlich für jeden String eine neue Variableninstanz erzeugt werden (könnte ja anders sein), welche dann irgendwann bereinigt wird (Garbage Collector) und das kann durchaus eine Weile dauern. mal davon abgesehen, das bei mir die Funktion mdlDialog_updateCompletionBar heißt, wenn sich da was getan hätte, dann ggf. auch mit dem Hintergrund geänderter Speichernutzung. Das mit V8 übersetzt und mit V8i laufen lassen da was ändert würde mich wundern. In V8 (bis 2004) war die Speicherverwaltung (ohne .Net im HIntergrund schon anders, aber für echte MDL und keine Nativcode Sachen sollte es da keinen Unterschied geben ------------------ Wer's nur glaubt, weiß es nicht ! Rechtschreibfehler gibt's gratis
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cdv Mitglied Freiberufler
Beiträge: 15 Registriert: 24.11.2011 Win V7 Prof 64 bit V8, V8i
|
erstellt am: 15. Jul. 2013 14:05 <-- editieren / zitieren --> Unities abgeben:
Hallo stark, ein weinig hatte ich ja auf eine Reaktion von Dir spekuliert... - offensichtlich gibt es tatsächlich beide Funktionen (siehe MDLAPIFunctionReference) - GarbageCollektor kann gut sein, ist aber so oder so Mist... - Na klar kann man vorher in etwa abschätzen, wie oft man solche Aufrufe braucht. Trotzdem habe ich jetzt den höheren Aufwand, weil sich irgend jemand die Implementation leicht gemacht hat. Und kann bei jedem Aufruf eines Fensters überlegen, wie oft der vorkommt. - Meine Behauptung bzgl .der V8 überprüfe ich noch mal... Viele Grüße und danke für die Antwort Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cdv Mitglied Freiberufler
Beiträge: 15 Registriert: 24.11.2011 Win V7 Prof 64 bit V8, V8i
|
erstellt am: 15. Jul. 2013 14:58 <-- editieren / zitieren --> Unities abgeben:
Und Du hattest recht - mit der V8- Version klemmt's genau so. Allerdings nur in der V8i, in der V8 läuft's. Da ergeben sich aber gleich weitere, grundsätzliche Fragen: Wenn mir schon von hinten durch die Brust ein GarbageCollector untergejubelt wird - kann ich dann wenigstens auch "von Hand" aufräumen? Analog GC.Collect in VB? Viele Grüße Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
stark Moderator Dipl.Informatiker
Beiträge: 680 Registriert: 27.06.2001 MicroStation V8i auf Windows 7 + 8.1
|
erstellt am: 15. Jul. 2013 15:56 <-- editieren / zitieren --> Unities abgeben: Nur für cdv
Ich kann das Ganze bei mir auch mal testen, wird allerdings diese Woche nix, bin ab morgen früh in Holland bei Bentley, es könnte im Extremfall auch noch am Zusammenspiel mit der Grafik liegen, schließlich läuft alles über DirectX, auch die Dialogsteuerung, und es gibt bekannte Probleme z.T. mit der DirectX11 als auch mit den Treibern bei NVIDIA (angeblich mit dem letzten beseitigt) ------------------ Wer's nur glaubt, weiß es nicht ! Rechtschreibfehler gibt's gratis
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|