0
我想知道一个好主意,用Lambda + delegate + Func/Action重写我的类。C#委托,动作,函数?如何编写代码以使代码更短
在我的代码中,有很多Lock封装(保存一个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);}
我想做一个Wrapper方法来使用锁。 这是我的形象。
await LockWrapper(Work1(modelInstance));
Func,Action()?如何写它?
我觉得你把'Func'和'Action'与代表完全不同。它们只是'delegate'的特殊类型,它们被包含在.NET Base Class Library中,因此我们不必定义一些最常见的委托类型,例如'public delegate void Del(string message); ' – kennyzx