Non, contrairement à Java, dans .NET, vous ne pouvez pas étendre la classe Thread car elle est scellée.
Donc, pour exécuter une fonction dans un nouveau thread la manière la plus naïve est de reproduire manuellement un nouveau thread et passer la fonction à exécuter (en fonction anonyme dans ce cas):
Thread thread = new Thread(() =>
{
// put the code here that you want to be executed in a new thread
});
thread.Start();
ou si vous ne voulez pas utiliser un délégué anonyme puis définir une méthode:
public void SomeMethod()
{
// put the code here that you want to be executed in a new thread
}
puis dans la même classe commencer un nouveau fil qui passe la référence à cette méthode:
Thread thread = new Thread(SomeMethod);
thread.Start();
et si vous voulez passer des paramètres à la méthode:
public void SomeMethod(object someParameter)
{
// put the code here that you want to be executed in a new thread
}
puis:
Thread thread = new Thread(SomeMethod);
thread.Start("this is some value");
C'est la façon native pour exécuter des tâches dans les discussions de fond. Pour éviter de payer le prix élevé de créer de nouvelles discussions, vous pouvez utiliser l'un des fils du ThreadPool:
ThreadPool.QueueUserWorkItem(() =>
{
// put the code here that you want to be executed in a new thread
});
ou en utilisant un asynchronous delegate execution:
Action someMethod =() =>
{
// put the code here that you want to be executed in a new thread
};
someMethod.BeginInvoke(ar =>
{
((Action)ar.AsyncState).EndInvoke(ar);
}, someMethod);
Et encore un autre, et plus moderne façon d'exécuter ces tâches est d'utiliser le TPL (à partir de .NET 4.0):
Task.Factory.StartNew(() =>
{
// put the code here that you want to be executed in a new thread
});
Donc, oui, comme vous pouvez le voir, il existe des gazzilions de techniques qui pourraient être utilisées pour exécuter un tas de code sur un thread séparé.
Suppression du '[java]' comme réponse ne sera pas sur Java (il est seulement mentionné dans la question) –
Il y a plusieurs façons de le faire. Je suggère de jeter un oeil à [Threading in C#] (http://www.albahari.com/threading/) de Josef Albahari. C'est un bon début, bien que quelque peu daté (le TPL ne sera pas mentionné, par exemple). – Oded
Si vous essayez de rechercher avec votre moteur de recherche préféré sur «C# Thread», vous trouverez une liste innombrable de liens. Démarrage, bien sûr, avec [MSDN] (http://msdn.microsoft.com/en-us/library/ms173178 (VS.80).aspx) – Steve