【发布时间】:2017-09-30 08:50:07
【问题描述】:
我想知道一个用 Lambda + 委托 + Func/Action 重写我的类的好主意。
在我的代码中,有很多 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视为与委托截然不同的东西。它们只是delegate的特殊类型,它们包含在 .NET 基类库中,因此我们不必像public delegate void Del(string message);那样定义一些最常见的委托类型
标签: c# lambda uwp delegates action