C# 如何堆栈方法调用?
我有一个利用资源的WPF应用程序。此资源可通过两种方式使用:C# 如何堆栈方法调用?,c#,wpf,C#,Wpf,我有一个利用资源的WPF应用程序。此资源可通过两种方式使用: IU事件。当用户单击视图的不同元素时,它会写入一个值 在后台工作。定期读取各种数值 我在阅读过程中遇到问题,用户必须进行书写。我想堆叠对资源方法的调用,以便按顺序执行它们 以下是resource的方法: 异步任务ReadBitsAsync(字节id) 异步任务ReadUshortsAsync(字节id) 异步任务WriteBitAsync(字节id、ushort位置、bool值) async任务WriteUshortAsync(
- IU事件。当用户单击视图的不同元素时,它会写入一个值
- 在后台工作。定期读取各种数值
异步任务ReadBitsAsync(字节id)
异步任务ReadUshortsAsync(字节id)
异步任务WriteBitAsync(字节id、ushort位置、bool值)
async任务WriteUshortAsync(字节id、ushort位置、ushort值)
lock
语句来做,但是在lock
语句中不能等待task
有没有办法用所有参数值来堆叠这些方法调用?将资源的所有命令/操作放在一个队列中,并让一个线程处理该队列。如果希望写入/用户操作优先,请不要使用队列,而是使用列表,并将这些操作添加到顶部
我已经试着用lock语句来做了,但是不能在lock语句中等待任务
如果使用信号量LIM
,甚至可以异步“锁定”:
SemaphoreSlim semaphore = new SemaphoreSlim(1, 1);
await semaphore.WaitAsync(); //acquire "lock"
try
{
//...
await DoSomethingAsync();
}
finally
{
semaphore.Release(); //release "lock"
}
@Servy这不是我要求的,但这是我以前想做的。对不起,重复了。