Je veux savoir une bonne idée de réécrire ma classe avec Lambda + delegate + Func/Action.C# Délégué, Action, Func ?? Comment l'écrire pour faire du code plus court
Dans mon code, il y a beaucoup de wrapper Lock (pour sauvegarder un modèle Sqlite).
using System.Threading;
using System.Threading.Tasks;
....
private SemaphoreSlim AsyncLock = new SemaphoreSlim(1);
....
private async Task LockWork1(SqliteModel model)
{
await AsyncLock.WaitAsync();
try { await Work1(model); }
finally { AsyncLock.Release(); }
}
private async Task LockWork2(SqliteModel model)
{
await AsyncLock.WaitAsync();
try{await Work2(model);}
finally{AsyncLock.Release();}
}
private async Task Work1(SqliteModel model){var a=model; await Task.Delay(1000);}
private async Task Work2(SqliteModel model){var a=model; await Task.Delay(2000);}
Je souhaite créer une méthode Wrapper pour utiliser le verrouillage. Voici mon image.
await LockWrapper(Work1(modelInstance));
Func, Action()? Comment l'écrire ??
Je pense que vous prenez 'Func' et' Action' comme quelque chose de radicalement différent de délégué. Ils ne sont que des types spéciaux de 'delegate', ils sont inclus dans la bibliothèque de classes .NET Base. Nous n'avons donc pas besoin de définir certains des types de délégués les plus courants comme' public delegate void Del (message de chaîne); ' – kennyzx