NetErr()
Moderator: Moderatoren
- Manfred
- Foren-Administrator
- Beiträge: 21165
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 206 Mal
- Danksagung erhalten: 67 Mal
NetErr()
mal eine ganz allgemeine Frage, wenn DbUseArea() benutzt wird und es gibt Probleme damit, müßte dann nicht ein NetErr() abgefragt werden können? Oder noch anders gefragt, wie lange versucht Xbase++ eigentlich die Tabelle zu öffnen, bis es einen NetEror() geben würde? Kann das eingestellt werden?
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9345
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 100 Mal
- Danksagung erhalten: 359 Mal
- Kontaktdaten:
Re: NetErr()
NetErr() geht nur auf .T., wenn die Tabelle nicht geöffnet werden konnte, weil sie im exklusiven Zugriff durch andere Benutzer ist - oder umgekehrt Du exklusiven Zugriff versuchst, die Tabelle aber anderswo (auch "shared") offen ist. Wenn also irgendwo jemand ein USE ... EXCLUSIVE gemacht hat und Du machst USE (mit oder ohne EXCLUSIVE), geht NetErr() anschließend auf .T., die Workarea ist leer. Bei anderen Öffnungsfehlern (Datei nicht vorhanden, korrupte Datei usw. usf.) feuert NetErr() nicht, stattdessen gibt es einen Laufzeitfehler.
Über DbeInfo() kann man LockRetry und LockDelay setzen, aber m.E. nicht so etwas wie "UseRetry". Das hat ja auch nicht wirklich Sinn. Jemand, der eine Tabelle exklusiv hält, macht das ja aus Gründen - die meistens nicht ein paar Millisekunden später wieder weg sind. Wenn Du aber von Deiner eigenen App weißt, dass es einen exklusiven Zugriff möglicherweise nur für ein paar Sekündchen gibt, weil mal eben gepackt werden muss, kannst Du die Wiederholung ja in einer Öffnungsfunktion programmieren.
Über DbeInfo() kann man LockRetry und LockDelay setzen, aber m.E. nicht so etwas wie "UseRetry". Das hat ja auch nicht wirklich Sinn. Jemand, der eine Tabelle exklusiv hält, macht das ja aus Gründen - die meistens nicht ein paar Millisekunden später wieder weg sind. Wenn Du aber von Deiner eigenen App weißt, dass es einen exklusiven Zugriff möglicherweise nur für ein paar Sekündchen gibt, weil mal eben gepackt werden muss, kannst Du die Wiederholung ja in einer Öffnungsfunktion programmieren.
Herzlich,
Tom
Tom
- Manfred
- Foren-Administrator
- Beiträge: 21165
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 206 Mal
- Danksagung erhalten: 67 Mal
Re: NetErr()
Hi Tom,
es geht in dem Fall darum, das ich derzeit Probleme mit Mehrfachzugriff im Netz habe. Es kann ab und an eine Zeit dauern, bis das Programm eine DBF öffnen kann. (so meine vermutung) Dabei graut es aber aus und ist nicht mehr bedienbar für eine gewisse Zeit. Leider dauert diese Zeit manchmal etwas länger als der User bereit ist zu warten. Bis ich nun das Problem behoben habe möchte ich gerne einen Workaround programmieren, der zumindest auf sowas reagiert. Aber leider gibt es dann kein Feedback vom Programm sondern einfach nur Stillstand.
es geht in dem Fall darum, das ich derzeit Probleme mit Mehrfachzugriff im Netz habe. Es kann ab und an eine Zeit dauern, bis das Programm eine DBF öffnen kann. (so meine vermutung) Dabei graut es aber aus und ist nicht mehr bedienbar für eine gewisse Zeit. Leider dauert diese Zeit manchmal etwas länger als der User bereit ist zu warten. Bis ich nun das Problem behoben habe möchte ich gerne einen Workaround programmieren, der zumindest auf sowas reagiert. Aber leider gibt es dann kein Feedback vom Programm sondern einfach nur Stillstand.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9345
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 100 Mal
- Danksagung erhalten: 359 Mal
- Kontaktdaten:
Re: NetErr()
Hallo, Manfred.
Mmh. Da würde ich eher an die Ursachen gehen. Entweder kaskadiert ein Virenscanner oder das Netz ist sehr schlecht konfiguriert.
Du kannst natürlich auch die Tabellenöffnung irgendwie in einen Thread legen, der nach einer gewissen Zeit gekillt wird, wenn er nicht antwortet, und bei Erfolg holst Du Dir die Workarea über den Zerospace. Aber, wie gesagt. Die Ursachenbekämpfung ist vermutlich sinnvoller.
Mmh. Da würde ich eher an die Ursachen gehen. Entweder kaskadiert ein Virenscanner oder das Netz ist sehr schlecht konfiguriert.
Du kannst natürlich auch die Tabellenöffnung irgendwie in einen Thread legen, der nach einer gewissen Zeit gekillt wird, wenn er nicht antwortet, und bei Erfolg holst Du Dir die Workarea über den Zerospace. Aber, wie gesagt. Die Ursachenbekämpfung ist vermutlich sinnvoller.
Herzlich,
Tom
Tom
- Manfred
- Foren-Administrator
- Beiträge: 21165
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 206 Mal
- Danksagung erhalten: 67 Mal
Re: NetErr()
Tom,
Du hast recht. Ursache bekämpfen ist besser. Die Ursache kenne ich vermutlich, aber sie läßt sich nicht so schnell aus der Welt schaffen. Mich würde aber auch direkt interessieren, warum das Programm so lange rumwerkelt und nicht früher aufgibt. Das würde mir schon für den Anfang reichen für den Lerneffekt.
Du hast recht. Ursache bekämpfen ist besser. Die Ursache kenne ich vermutlich, aber sie läßt sich nicht so schnell aus der Welt schaffen. Mich würde aber auch direkt interessieren, warum das Programm so lange rumwerkelt und nicht früher aufgibt. Das würde mir schon für den Anfang reichen für den Lerneffekt.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Manfred
- Foren-Administrator
- Beiträge: 21165
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 206 Mal
- Danksagung erhalten: 67 Mal
Re: NetErr()
das Programm sagt mir was, aber was soll ich damit machen?
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- HaPe
- 1000 working lines a day
- Beiträge: 995
- Registriert: So, 15. Nov 2015 17:44
- Wohnort: 71665 Vaihingen-Enz
- Hat sich bedankt: 17 Mal
- Danksagung erhalten: 15 Mal
Re: NetErr()
Hallo Manfred !
Damit siehst du welche Dateien es öffnet/schließt, in der Registry rumrödelt, auf dem Netzwerk Zugriffe durchführt, Stackaktivitäten usw..
Auf dein Programm während des Problemfalles anwenden.das Programm sagt mir was, aber was soll ich damit machen?
Damit siehst du welche Dateien es öffnet/schließt, in der Registry rumrödelt, auf dem Netzwerk Zugriffe durchführt, Stackaktivitäten usw..
--
Hans-Peter
Hans-Peter
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9345
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 100 Mal
- Danksagung erhalten: 359 Mal
- Kontaktdaten:
Re: NetErr()
Genau. Das loggt alle Events und Requests und all dieses Zeug - und zeigt Dir, wie lange was braucht und was ggf. querfunkt. Du kannst filtern, beispielsweise auf Anwendungen oder, was hier vermutlich sinnvoller wäre, auf Verzeichnisse. Dann siehst Du, was genau passiert, wenn Deine Anwendung versucht, sich ein Handle auf eine Tabelle zu holen.
Herzlich,
Tom
Tom