Laden...

Task mit spez. Namen starten/killen

Erstellt von M.Lach vor 2 Jahren Letzter Beitrag vor 2 Jahren 432 Views
M
M.Lach Themenstarter:in
33 Beiträge seit 2008
vor 2 Jahren
Task mit spez. Namen starten/killen

Ich möchte als Test und zum spielen mit c# (Microsoft Visual Studio Community 2019)
folgendes erreichen:
Eine Windows-Form soll eine Textbox haben, dort soll man einen Text eingeben können.
Wenn man dann auf den Button "Start" klickt, wird ein (Dummy)-Task erzeugt, der den Namen hat, der in der Textbox steht.
Der muss nichts weiter machen. als nur in der Taskliste (Taskmanager) mit dem spez. Namen zu erscheinen.
Wie bekomme ich es hin, das ich eine Variable mit dem Inhalt der Textbox als Namen für den Task nutze (hier fest "taskname2")?


Task t = Task.Run(new Action(taskname2));
                Console.WriteLine("läuft") ;

wenn ich das so mache, sehe ich als laufenden task "scriptsandbox64". Da hätte ich gerne den Namen aus der Textbox.

Und wie "kille" ich dann diesen wieder?

--

Mit freundlichen Grüßen,

Matthias Lach

6.911 Beiträge seit 2009
vor 2 Jahren

Hallo M.Lach ,

nur in der Taskliste (Taskmanager)

Meinst du jenen von Windows?
Das wäre somit ein Prozess der gestartet werden muss. Angezeigt wird dort der Prozessname (von z.B. der exe).

  
Task t = Task.Run(new Action(taskname2));  
  

Das ist ein Task-Objekt.
Dem kann kein Name gegeben werden. Einem Thead kannst du benennen, damit z.B. in der Thread-Übersicht das erkenntlich ist.

Und wie "kille" ich dann diesen wieder?

Entweder lebt der Prozess od. Task von alleine ab, wenn die Aktion, die ausgeführt werden soll, fertig ist od. der Prozess wird geKillt, der Task kann abgebrochen werden mittels Task cancellation.

Was hast du wirklich vor?

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

M
M.Lach Themenstarter:in
33 Beiträge seit 2008
vor 2 Jahren

ich möchte einfach einen Eintrag in der Taskmanger-Liste der laufenden Prozesse/task erreichen. der soll nicht mal was machen, einfach nur "da sein".
Ich übe das noch und gucke, wie ich was erreichen kann.
Den Unterschied Task/Thread gucke ich mir an. Danke für den Hinweis.

--

Mit freundlichen Grüßen,

Matthias Lach

4.931 Beiträge seit 2008
vor 2 Jahren

Du verwechselt da etwas. Die .NET-Klasse Task ist nur eine bessere Abstraktion für die Benutzung von Threads.
Der Task-Manager zeigt aber nur eigenständige Prozesse an, d.h. du müßtest ein externes Programm mittels der Process-Klasse starten (der Name ist aber dann durch den Programmnamen vorgegeben).

Nur mit Programmen wie z.B. Process Explorer kann man sich auch mehr Details zu den Prozessen (wie z.B. Threads) anzeigen lassen.

M
M.Lach Themenstarter:in
33 Beiträge seit 2008
vor 2 Jahren

ok, also "Dumm.exe" erstellen, diese dann umbenennen und dann starten.

--

Mit freundlichen Grüßen,

Matthias Lach

6.911 Beiträge seit 2009
vor 2 Jahren

Hallo M.Lach ,

ja.

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

M
M.Lach Themenstarter:in
33 Beiträge seit 2008
vor 2 Jahren

habe eben festgestellt, das es nicht reicht, nur die EXE umzubenennen.
Wie die Exe heist ist egal.
Der Name in der Kopfzeile, den ich im Text des Forms eintrage wird benötigt.
Habe ich eine Chance, in der laufenden Anwendung den Text der Kopfzeile der Windows-Form zu ändern?
Die Klasse "Form1" hat so keine ".Text", auf die ich zugreifen könnte.
Da gibt es doch bestimmt einen "Umweg"?

--

Mit freundlichen Grüßen,

Matthias Lach

87 Beiträge seit 2016
vor 2 Jahren

Hallo,

Die Klasse "Form1" hat so keine ".Text", auf die ich zugreifen könnte.

die Instanz der Klasse schon.

glandorf

M
M.Lach Themenstarter:in
33 Beiträge seit 2008
vor 2 Jahren

auch, wenn das Programm schon läuft? wie komm ich da dran, bitte?

--

Mit freundlichen Grüßen,

Matthias Lach

4.931 Beiträge seit 2008
vor 2 Jahren

Bei der Process-Klasse gibt es zwar die Eigenschaft MainWindowTitle, diese ist jedoch nur lesend.
Mithilfe von MainWindowHandle und P/Invoke-Aufrufen von WinAPI-Funktionen (z.B. SetWindowText) könntest du dies zwar erreichen, aber als Anfänger solltest du dich ersteinmal auf pures .NET konzentrieren und dich an einfacheren Aufgaben versuchen.

87 Beiträge seit 2016
vor 2 Jahren

Hallo

auch, wenn das Programm schon läuft? wie komm ich da dran, bitte?

Je nachdem wie du dass Programm startest, könntest du ihm ja Kommandozeilenparameter mitgeben.
Abfragen dieser z.B mit


Environment.GetCommandLineArgs()

glandorf