Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Task mit spez. Namen starten/killen
M.Lach
myCSharp.de - Member



Dabei seit:
Beiträge: 33

Themenstarter:

Task mit spez. Namen starten/killen

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
gfoidl
myCSharp.de - Team

Avatar #avatar-2894.jpg


Dabei seit:
Beiträge: 6.829
Herkunft: Waidring

beantworten | zitieren | melden

Hallo M.Lach ,
Zitat
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).
Zitat


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.
Zitat
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!"
private Nachricht | Beiträge des Benutzers
M.Lach
myCSharp.de - Member



Dabei seit:
Beiträge: 33

Themenstarter:

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
Th69
myCSharp.de - Experte

Avatar #avatar-2578.jpg


Dabei seit:
Beiträge: 4.358

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
M.Lach
myCSharp.de - Member



Dabei seit:
Beiträge: 33

Themenstarter:

beantworten | zitieren | melden

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

Mit freundlichen Grüßen,

Matthias Lach
private Nachricht | Beiträge des Benutzers
gfoidl
myCSharp.de - Team

Avatar #avatar-2894.jpg


Dabei seit:
Beiträge: 6.829
Herkunft: Waidring

beantworten | zitieren | melden

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!"
private Nachricht | Beiträge des Benutzers
M.Lach
myCSharp.de - Member



Dabei seit:
Beiträge: 33

Themenstarter:

beantworten | zitieren | melden

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"?
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von M.Lach am .
--

Mit freundlichen Grüßen,

Matthias Lach
private Nachricht | Beiträge des Benutzers
glandorf
myCSharp.de - Member

Avatar #avatar-4144.jpg


Dabei seit:
Beiträge: 80
Herkunft: Chemnitz

beantworten | zitieren | melden

Hallo,
Zitat von M.Lach
Die Klasse "Form1" hat so keine ".Text", auf die ich zugreifen könnte.

die Instanz der Klasse schon.

glandorf
private Nachricht | Beiträge des Benutzers
M.Lach
myCSharp.de - Member



Dabei seit:
Beiträge: 33

Themenstarter:

beantworten | zitieren | melden

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

Mit freundlichen Grüßen,

Matthias Lach
private Nachricht | Beiträge des Benutzers
Th69
myCSharp.de - Experte

Avatar #avatar-2578.jpg


Dabei seit:
Beiträge: 4.358

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
glandorf
myCSharp.de - Member

Avatar #avatar-4144.jpg


Dabei seit:
Beiträge: 80
Herkunft: Chemnitz

beantworten | zitieren | melden

Hallo
Zitat von M.Lach
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


Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von glandorf am .
private Nachricht | Beiträge des Benutzers