我有一个简单的任务队列,它允许一次执行一个任务:
public class TaskQueue
{
public SemaphoreSlim semaphore;
public TaskQueue()
{
semaphore = new SemaphoreSlim(1);
}
public async Task<T> Enqueue<T>(Func<Task<T>> taskGenerator)
{
await semaphore.WaitAsync();
try
{
return await taskGenerator();
}
finally
{
semaphore.Release();
}
}
public async Task Enqueue(Func<Task> taskGenerator)
{
await semaphore.WaitAsync();
try
{
await taskGenerator();
}
finally
{
semaphore.Release();
}
}
}
我会像这样在其中排队任务:
private async Task SaveData()
{
//some code
await taskQueue.Enqueue(async () => { printed = await pm.Print(Template); });
//some code
}
现在我想做的是在Enqueue
方法内,添加一个包含信息$Print was called with parameter {Template}
的日志。 如何获取执行的方法的名称及其参数?
我知道我可以[CallerMemberName] string caller = ""
来获取有关在SaveData
内部进行的呼叫的信息,但是是否有属性或东西可以记录我想要的信息?