AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Fragen zum TThread, Programm absturzsicher?
Thema durchsuchen
Ansicht
Themen-Optionen

Fragen zum TThread, Programm absturzsicher?

Ein Thema von BAMatze · begonnen am 6. Feb 2009 · letzter Beitrag vom 8. Feb 2009
Antwort Antwort
Seite 1 von 3  1 23      
BAMatze

Registriert seit: 18. Aug 2008
Ort: Berlin
759 Beiträge
 
Turbo Delphi für Win32
 
#1

Fragen zum TThread, Programm absturzsicher?

  Alt 6. Feb 2009, 08:51
Hallo @ all,

Ich hab einige Fragen zu der Komponente TThread. Ich möchte für ein Projekt, bei dem wichtige Daten erzeugt werden, soll Absturz sicher gemacht werden. Dazu möchte ich das Programm wie folgt aufbauen:

Der durch den Start erzeugte Thread soll als so eine Art Sicherheitsthread dienen, der rein nur die Daten für mich sichert, die erzeugt werden. Damit möchte ich verhindern (was bei uns schonmal in der Firma passiert ist, dass nach 2h Computerarbeitszeit und einem Programmabsturz sämtliche Daten verloren gehen). Dieser Sicherheitsthread soll den eigentlichen Arbeitsthread erzeugen und in dem wird eigentlich sämtliche Arbeit erledigt.

Jetzt meine Frage: Wenn ich eine Exception in dem Arbeitsthread bekomme, führt das auch zu einem kompletten Programmabsturz oder wird dann nur der Arbeitsthread tot gemacht oder führt es auch zu einem kompletten Programmabsturz? Wenn es einen kompletten Programmabsturz gibt, kann man dies auf irgendeine Art verhindern, so dass der Sicherheitsthread weiterlaufen kann?

Vielen Dank
BAMatze
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Fragen zum TThread, Programm absturzsicher?

  Alt 6. Feb 2009, 09:13
Ein kompletter Programmabsturz entsteht wenn im Hauptthread (dort, wo das Programm startet) eine Exception nicht mit try..Except abgefangen wird. Wird ein einem Kindthread eine Excepütion nicht abgefangen beendet das nur diesen Thread.

Ich glaube du solltest dir eher Gedanken über Exceptionbehandlung machen und dann über Threads nachdenken.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
BAMatze

Registriert seit: 18. Aug 2008
Ort: Berlin
759 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Fragen zum TThread, Programm absturzsicher?

  Alt 6. Feb 2009, 09:40
Zitat von sirius:
Ein kompletter Programmabsturz entsteht wenn im Hauptthread (dort, wo das Programm startet) eine Exception nicht mit try..Except abgefangen wird. Wird ein einem Kindthread eine Excepütion nicht abgefangen beendet das nur diesen Thread.

Ich glaube du solltest dir eher Gedanken über Exceptionbehandlung machen und dann über Threads nachdenken.
Also da ich hier ja eher "Learning by Doing" mache, bin ich für solche Hinweise sehr dankbar. Das mit Try..Except habe ich auch schon in dem Programm verwendet. Glaube ich erkläre mal etwas mehr. Also das Programm steuert eine Produktionsanlage. Das heißt es sind etliche Perepherie-Geräte dran und die Kamera, welche mir gegeben wurde, die Bilder im Micrometer-Bereich macht, kann nicht in Delphi programmiert werden, da die Eigenschaften der Komponenten in Delphi nicht konform mit den Definitionen für die Kamera gehen. Das Hauptproblem ist dabei die Live-Kameradarstellung auf dem Monitor. Deswegen verwende ich eine ActiveX-Komponente von der Firma, die die Kamera herstellt. Diese scheint nur etwas lieblos programmiert (Fehlermeldungen komme teilweise 2mal und seit Einbindung der Komponente kommt es vermehrt dazu, dass sich das Programm nicht vollständig schließen lässt -> Computer muss neu gestartet werden, damit das Programm wieder lauffähig wird) zu sein, was zu ständigen Querschlägern in dem Programm führt. Da ich derzeit nicht die Kenntnisse habe um die ActiveX-Komponente neu in einer anderen Sprache zu schreiben, die ich auch noch nicht kann, möchte ich das Problem erstmal (gewissen Zeitdruck hab ich ja auch, wegen Termin) auf die Weise lösen, dass ich den Thread in einem Nebenthread packe und somit die Daten sichern kann und darauf zielte die Frage an sich hin.

Danke dir für die schnelle Antwort @ sirius.
  Mit Zitat antworten Zitat
messie

Registriert seit: 2. Mär 2005
Ort: Göttingen
1.592 Beiträge
 
Delphi 2009 Professional
 
#4

Re: Fragen zum TThread, Programm absturzsicher?

  Alt 6. Feb 2009, 09:54
Ist bei der Kamera vielleicht eine dll dabei, mit der Du aus Delphi zugreifen kannst? Mit ActivX-Controls ist das so eine Sache...

Grüße, Messie
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Fragen zum TThread, Programm absturzsicher?

  Alt 6. Feb 2009, 09:58
Mir fällt dazu nicht viel ein. Wenn sogar der ganze Computer abstürzt. Da muss ja einiges falsch sein. Das sieht ja schon mehr nach Treiberproblemen aus.

Und sichtbare Controls sollte man immer im Hauptthread lassen, deswegen sehe ich keine Chance das ActiveX-Control in einen anderen Thread zu legen.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
BAMatze

Registriert seit: 18. Aug 2008
Ort: Berlin
759 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Fragen zum TThread, Programm absturzsicher?

  Alt 6. Feb 2009, 10:11
Zitat von messie:
Ist bei der Kamera vielleicht eine dll dabei, mit der Du aus Delphi zugreifen kannst? Mit ActivX-Controls ist das so eine Sache...

Grüße, Messie
Ja eine Dll ist dabei. Mit der konnte ich auch alles realisieren in Delphi, bis auf die Darstellung der Live-Video-Funktion, dafür fehlt den Delphi-Komponenten, so wie ich das in den Manuels gelesen hab die richtige Darstellungsmöglichkeit, die wohl in C++ und VB vorhanden sind, was ich aber nicht ganz verstehen kann, da ja auch die TForm die Eigenschaft Canvas meiner Meinung nach hat. Aber auch der Versuch das Live-Kamerabild in ein Bmp und dann TPaintbox oder Image zu packen sowie direkte Ausgabe auf ein Panel (Canvas) scheiterte. Die einzige Möglichkeit nach Beschreibung der Herstellerfirma für Delphi ist erstmal die Verwendung der ActiveX-Komponente.

@ sirius also der gesamte Rechner stürzt nicht ab, das hab ich in der Entwicklungszeit eigentlich gut unter Kontrolle bekommen, ist allerdings nachher, wenn ich (wegen Firmenblindheit für die eigene Arbeit) später nicht mehr selber dran sitze, nicht ausgeschlossen, dass es nochmal passiert. Aber was derzeit immer wieder passiert, sind Exceptions (trotz try und except) und damit verbundene Datenverluste. Dies möchte ich mit der Methode eigentlich minimieren. (Lasse derzeit schon mehrere Sicherungen mitlaufen z.B. erstellen einer Tempfile und protokollieren in dieser).

BAMatze
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#7

Re: Fragen zum TThread, Programm absturzsicher?

  Alt 6. Feb 2009, 10:23
Wenn es in Delphi angeblich nicht geht, dann könntest du dir eventuell eine DLL in C oder VB erstellen, welche auf die Kamera zugreift und dein Delphi-Programm greift über diese DLL zu.

die Möglichkein die Kamera in einem extra Programm laufen zu lassen bestünde auch noch ... beide Programme könnten dann via Hier im Forum suchenIPC (Hier im Forum suchenMMF / Messages) miteinander kommunizieren.
$2B or not $2B
  Mit Zitat antworten Zitat
BAMatze

Registriert seit: 18. Aug 2008
Ort: Berlin
759 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Fragen zum TThread, Programm absturzsicher?

  Alt 6. Feb 2009, 10:36
Zitat von himitsu:
Wenn es in Delphi angeblich nicht geht, dann könntest du dir eventuell eine DLL in C oder VB erstellen, welche auf die Kamera zugreift und dein Delphi-Programm greift über diese DLL zu.

die Möglichkein die Kamera in einem extra Programm laufen zu lassen bestünde auch noch ... beide Programme könnten dann via Hier im Forum suchenIPC (Hier im Forum suchenMMF / Messages) miteinander kommunizieren.
Also ich will im Frühjahr/ Sommer das Programm nochmal überarbeiten. Das heißt gerade arbeite ich eh an einer Art Beta-Version, die aber einen terminierten Abgabetermin hat. Danach soll ich dies eh überarbeiten und da habe ich auch schon über solche Möglichkeiten nachgedacht, wobei die Variante eine eigene ActiveX-Komponente in C# zu schreiben derzeit die favourisierte ist, da ich einen Kollegen hab, der die Sprache gut kann, aber leider keine Zeit hat mir die Komponente zu erstellen. Das heißt einarbeiten in C# und dann kann ich nach Hilfe fragen, wenn ich mal ein Problem hab.

Was ich an deiner Lösung nicht verstanden hab ist, wie mein Problem mit einer DLL in C oder VB gelöst wird, vieleicht kannst du da noch etwas genauer werden. Denn das Problem, dass die Delphi-Komponenten anscheinend nicht die geeignete Schnittstelle haben, um das Live-Bild der Kamera darzustellen bleibt doch oder hab ich da jetzt einen Denk-Fehler?

BAMatze
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: Fragen zum TThread, Programm absturzsicher?

  Alt 6. Feb 2009, 10:43
Warum sollte das Delphi nicht anzeigen können?
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Benutzerbild von Sunlight7
Sunlight7

Registriert seit: 17. Sep 2006
Ort: Sonnensystem, Zentral
1.522 Beiträge
 
Delphi 5 Standard
 
#10

Re: Fragen zum TThread, Programm absturzsicher?

  Alt 6. Feb 2009, 10:43
Zitat von sirius:
Wird ein einem Kindthread eine Excepütion nicht abgefangen beendet das nur diesen Thread.
Sicher?
Zumindest in ältere Delphis stürtzt das Programm ab.
Windows: Ja - Microsoft: Nein -> www.ReactOS.org
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:22 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