Comment arrêter l'exécution d'une méthode, après un moment précis?

J'ai besoin d'arrêter l'exécution d'une méthode si elle n'est pas terminée à l'intérieur d'une période de temps limitée.

Pour faire ce travail, je peux utiliser les Thread.Abort méthode de cette façon:

void RunWithTimeout(ThreadStart entryPoint, int timeout)
{
    var thread = new Thread(() =>
    {
        try
        {
            entryPoint();
        }
        catch (ThreadAbortException)
        {   }

    }) { IsBackground = true };

    thread.Start();

    if (!thread.Join(timeout))
        thread.Abort();
}

Étant donné que je suis en utilisant .NET 3.5, est-il un meilleur moyen?

Edit: suite aux commentaires, voici mon entryPoint, mais je suis à la recherche d'un bon moyen pour tout entryPoint.

void entryPoint()
{
   //I can't use ReceiveTimeout property
   //there is not a ReceiveTimeout for the Compact Framework
   socket.Receive(...);
}
Voulez-vous lancer une ThnreadAbortException sans utiliser de Fil.Abandonner, ou voulez-vous arrêter l'exécution d'une méthode, après un délai d'attente?
la deuxième: arrêter l'exécution d'une méthode après un délai d'attente
stackoverflow.com/questions/299198/...
Envisagez l'utilisation d'une Tâche de la Bibliothèque Parallèle avec un CancellationToken.
La réponse est pire que ma solution...

OriginalL'auteur Nick | 2012-11-07