Délai d'expiration de la tâche C #

Je dois exécuter un long processus de fonctionnement dans un thread et continuer en retournant le résultat d'une fonction. Voici mon code :

Task<ProductEventArgs>.Factory.StartNew(() =>
    {
        try
        {
             //long operation which return new ProductEventArgs with a list of product

        }
        catch (Exception e)
        {
            return new ProductEventArgs() { E = e };
        }

    }).ContinueWith((x) => handleResult(x.Result), TaskScheduler.FromCurrentSynchronizationContext());

Le problème est en réalité je n'ai pas de délai d'attente. J'ai envie de mettre une minuterie afin de retourner quelque chose comme ceci :

   new ProductEventArgs() { E = new Exception("timeout") }; 

si le délai est atteint.
Ne pouvez pas utiliser les attendent/async.
Merci beaucoup !

source d'informationauteur Rototo