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") ;
Und wie "kille" ich dann diesen wieder?
--
Mit freundlichen Grüßen,
Matthias Lach
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 geKill
t, 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!"
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
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.
ok, also "Dumm.exe" erstellen, diese dann umbenennen und dann starten.
--
Mit freundlichen Grüßen,
Matthias Lach
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!"
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
Hallo,
Die Klasse "Form1" hat so keine ".Text", auf die ich zugreifen könnte.
die Instanz der Klasse schon.
glandorf
auch, wenn das Programm schon läuft? wie komm ich da dran, bitte?
--
Mit freundlichen Grüßen,
Matthias Lach
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.
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