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 № 1Czy 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.