Laden...

Thread, der nach Programmende noch lebt

Erstellt von Stu42 vor 17 Jahren Letzter Beitrag vor 17 Jahren 3.944 Views
S
Stu42 Themenstarter:in
506 Beiträge seit 2006
vor 17 Jahren
Thread, der nach Programmende noch lebt

Hallo,

gibt es in C# einen Timer oder ein Thread, der nach beendigung des Programmes noch lebt?
Oder muss man CreateThread aus der api hohlen?

Gruß Stu

1.457 Beiträge seit 2004
vor 17 Jahren

Also ich glaube nicht das es im .NET Framework diese Funktionalität gibt.

T
94 Beiträge seit 2006
vor 17 Jahren

hallo,

  1. was willste denn machen?
  2. du könntest ne exe erstellen die im hintergrund läuft und so die sachen ausführt (windows service)
  3. du könntest ne 'unsichtbare' form erstellen und davon dein eigentliches gui laden. wenn du dein gui schließt, haste ja immernoch den thread von der 'unsichtbaren' form
  4. http://pinvoke.net/default.aspx/kernel32/CreateThread.html wäre dein createthread vorschlag, scheint für mich aber am kompliziertesten.

ich selbst würde es wohl mit 3. lösen. aber vllt weiß ja sonst noch einer nen besseren vorschlag 😉

mfg

If you don't like me for who I am, then you don't like me for who I am, but all you're gonna get, is who I am.

S
Stu42 Themenstarter:in
506 Beiträge seit 2006
vor 17 Jahren

ja ich brauche nen 15 min timer, der geräte nach beendigung des Programmes abschaltet.

Das mit der unsichtbaren form finde ich von der Struktur her nicht so toll, diese kleine sache an einer so "großen" stelle unterbringen.

Das externe programm muss dann ja auch abfragen, wenn meine form geschlossen ist.

Ich werd dann doch wohl den CreateThread nehmen müssen.

6.862 Beiträge seit 2003
vor 17 Jahren

Ich versteh den Sinn noch nicht ganz. Dein Programm soll ja, so wie ichs verstehe, den Thread starten und der veranlasst dann dass Geräte abgeschaltet werden sollen. Wieso kann dein Programm das nicht direkt beim beenden tun? Falls die Geräte erst noch irgendwas tun müssen kannst du doch dein Programm bloß scheinbar beenden, indem du es einfach unsichtbar machst so das es nicht mehr in der Taskbar erscheint und lässt halt in deinem Programm den Timer laufen.

Baka wa shinanakya naoranai.

Mein XING Profil.

S
1.047 Beiträge seit 2005
vor 17 Jahren

Original von Stu42
ja ich brauche nen 15 min timer, der geräte nach beendigung des Programmes abschaltet.

Das mit der unsichtbaren form finde ich von der Struktur her nicht so toll, diese kleine sache an einer so "großen" stelle unterbringen.

Das externe programm muss dann ja auch abfragen, wenn meine form geschlossen ist.

Ich werd dann doch wohl den CreateThread nehmen müssen.

warum blendest du beim schließen deines programmes nicht einfach nur die form aus, startest nen 15min timer und fährst beim ablauf die geräte runter und beendest danach das programm? das macht meiner meinung nach am meisten sinn...

S
Stu42 Themenstarter:in
506 Beiträge seit 2006
vor 17 Jahren

ja das problem ist, in dem geräte ist eine UV-Lampe drin. Die sind teuer und haben eine begrenzte lebensdauert. Zu oft darf man sie aber auch nicht ein und ausschalten.

Aber wenn nach 10 min das Programm wieder gestartet wird, darf der TImer das geräte nicht abschalten.

D.h der Timer muss auch schauen wer zugriff auch das Gerät hat.

vieleicht ist da doch das externe programm besser.

6.862 Beiträge seit 2003
vor 17 Jahren

Hmm, haben die Geräte keine Abschaltautomatik wie Beamer?

Aber wie gesagt, die Lösung von sheitman und mir mit dem verstecken und dann beenden aus der normalen Form ist um einiges besser, als extra was zu starten.

Baka wa shinanakya naoranai.

Mein XING Profil.

S
1.047 Beiträge seit 2005
vor 17 Jahren

Original von Stu42
ja das problem ist, in dem geräte ist eine UV-Lampe drin. Die sind teuer und haben eine begrenzte lebensdauert. Zu oft darf man sie aber auch nicht ein und ausschalten.

Aber wenn nach 10 min das Programm wieder gestartet wird, darf der TImer das geräte nicht abschalten.

D.h der Timer muss auch schauen wer zugriff auch das Gerät hat.

vieleicht ist da doch das externe programm besser.

dazu fällt mir die tolle thematik ein "verhindern von mehreren instanzen meiner anwendung"... such mal dazu im forum... glaub im faq bereich steht da sicher was 🙂

im grunde gehts darum das dein programm beim starten schaut ob es denn schon läuft
falls ja, könnte dein programm dann eine nachricht an sich selbst (also die schon bestehende instanz) schicken, daß dann dadurch den timer unterbricht und wieder arbeitet

könnte bissl fummelarbeit sein aber klingt vom prinzip her für mich als elegante und schöne lösung =)

6.862 Beiträge seit 2003
vor 17 Jahren

Immer diese Edits wo dann die Antwort nimmer passt 🙂

Die von sheitman angesprochene Lösung gibts auch in der FAQ weil laufend danach gefragt wird: [FAQ] mehrere Programminstanzen verhindern (inkl. Parameterübergabe)

Baka wa shinanakya naoranai.

Mein XING Profil.

S
Stu42 Themenstarter:in
506 Beiträge seit 2006
vor 17 Jahren

ja das programm soll man ja doppelt öffnen können.

Aber ich werde wohl die Regestrie beschreiben. Der Timer kann dann ja schauen, ob dort eine Flag gesetzt ist.

Den Timer starte ich dann, so wie ihr es gesagt habt, wenn die Form beendet ist.

R
494 Beiträge seit 2006
vor 17 Jahren

Lass das Programm halt den ganzen Tag laufen und gut ist 🤔

6.862 Beiträge seit 2003
vor 17 Jahren

Also das mit der Registry kann man machen, aber würd ich persönlich nicht zu raten. Gibt Probleme wenn du keine Adminrechte hast. Die Variante mit schaun ob schon eine Instanz läuft und der dann signalisieren das das Gerät nicht abgeschaltet werden soll ist denk ich besser, wenn auch schwieriger umzusetzen.

Baka wa shinanakya naoranai.

Mein XING Profil.