Quelqu'un pourrait-il s'il vous plaît me montrer un petit extrait de code qui montre comment appeler une méthode de manière asynchrone en c #?
la source
Quelqu'un pourrait-il s'il vous plaît me montrer un petit extrait de code qui montre comment appeler une méthode de manière asynchrone en c #?
Si vous utilisez action.BeginInvoke (), vous devez appeler EndInvoke quelque part - sinon, le framework doit contenir le résultat de l'appel async sur le tas, ce qui entraîne une fuite de mémoire.
Si vous ne voulez pas passer à C # 5 avec les mots-clés async / await, vous pouvez simplement utiliser la bibliothèque Task Parallels dans .Net 4. C'est beaucoup, beaucoup plus agréable que d'utiliser BeginInvoke / EndInvoke, et donne un moyen propre de déclencher- et-oubliez pour les travaux asynchrones:
using System.Threading.Tasks;
...
void Foo(){}
...
new Task(Foo).Start();
Si vous avez des méthodes à appeler qui prennent des paramètres, vous pouvez utiliser un lambda pour simplifier l'appel sans avoir à créer de délégués:
void Foo2(int x, string y)
{
return;
}
...
new Task(() => { Foo2(42, "life, the universe, and everything");}).Start();
Je suis à peu près sûr (mais certes pas positif) que la syntaxe async / wait C # 5 n'est qu'un sucre syntaxique autour de la bibliothèque de tâches.
À partir de .Net 4.5, vous pouvez utiliser Task.Run pour démarrer simplement une action:
Task.Run vs Task.Factory.StartNew
la source
Voici une façon de le faire:
Bien sûr, vous devez remplacer
Action
par un autre type de délégué si la méthode a une signature différentela source
Consultez l'article MSDN Programmation asynchrone avec Async et Attendez si vous pouvez vous permettre de jouer avec de nouvelles choses. Il a été ajouté à .NET 4.5.
Exemple d'extrait de code du lien (qui provient lui-même de cet exemple de projet de code MSDN ):
Citant:
Plus de détails sont dans le lien .
la source
la source