web-dev-qa-db-fra.com

Comment construire une tâche sans la démarrer?

Je veux utiliser ce constructeur de tâche <> . Je n'arrive pas à obtenir la bonne sntax quelqu'un peut-il corriger mon code.

De plus, ai-je raison de penser que si une tâche est construite de cette façon, elle ne démarre pas?

Le constructeur dont je pense avoir besoin:

Task<TResult>(Func<Object, TResult>, Object)

Erreur de mon code:

Argument 1: impossible de convertir le 'groupe de méthodes' en 'System.Func<object,int> '

static void Main(string[] args)
{
    var t = new Task<int>(GetIntAsync, "3"); //error is on this line
    ...
}

static async Task<int> GetIntAsync(string callerThreadId)
{
    ...
    return someInt;
}
37
G. Stoynev
var t = new Task<int>(() => GetIntAsync("3").Result);

Ou

var t = new Task<int>((ob) => GetIntAsync((string) ob).Result, "3");

Pour éviter d'utiliser lambda, vous devez écrire une méthode statique comme celle-ci:

private static int GetInt(object state)
{
   return GetIntAsync(((string) state)).Result;
}

Puis:

var t = new Task<int>(GetInt, "3");
27
Vyacheslav Volkov