/ / Jak mogę usunąć oddzielną funkcję wątku roboczego i utworzyć wątek - c #, wielowątkowość

W jaki sposób można usunąć oddzielną funkcję wątku roboczego i utworzyć wątek - c #, wielowątkowość

To jest tradycyjny kod tworzenia wątków:

        public static void Ping()
{
new Thread(workThreadPingRequest) { IsBackground = true }.Start();
}

private static void workThreadPingRequest()
{
line1(); //Create connection
line2(); //Ask ping
line3(); //Process the reply and close connection
}

Mam wiele podobnych do nich par. Więc jak mogę usunąć osobną funkcję wątku roboczego, aby kod był łatwiejszy do mnie - poniżej:

        public static void Ping()
{
new Thread(new Func<void> fn = () =>
{ line1(); line2(); line3();})
{ IsBackground = true }
.Start();
}

Czy to możliwe?

Odpowiedzi:

1 dla odpowiedzi № 1

Czy próbowałeś już korzystać z .NET 4 Zadania?

Task.Factory.StartNew(() => {
line1();
line2();
line3();
});

1 dla odpowiedzi nr 2

Odpowiedź @Kamerona wydaje się być doskonałym pomysłem, ale jeśli korzystasz z .net 3.5, możesz użyć tego wątku:

System.Threading.ThreadPool.QueueUserWorkItem(_ =>
{
line1();
line2();
line3();
});

Jeśli naprawdę chcesz utworzyć nowy wątek, możesz to zrobić:

new Thread(() =>
{
line1();
line2();
line3();
}) { IsBackground = true }.Start();

1 dla odpowiedzi nr 3

Wygląda na to, że interesuje Cię tylko poprawa składni? BackgroundWorker jest dość convienent.

string arg = "blah...";
BackgroundWorker worker = new BackgroundWorker();
worker.DoWork += (s,e) =>
{
// can extract args from e
// code here
};
worker.RunAsync(args);

ten kod jest poza moim zasięgiem, więc może nie być idealny, ale pomysł jest.