Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何堆栈方法调用?_C#_Wpf - Fatal编程技术网

C# 如何堆栈方法调用?

C# 如何堆栈方法调用?,c#,wpf,C#,Wpf,我有一个利用资源的WPF应用程序。此资源可通过两种方式使用: IU事件。当用户单击视图的不同元素时,它会写入一个值 在后台工作。定期读取各种数值 我在阅读过程中遇到问题,用户必须进行书写。我想堆叠对资源方法的调用,以便按顺序执行它们 以下是resource的方法: 异步任务ReadBitsAsync(字节id) 异步任务ReadUshortsAsync(字节id) 异步任务WriteBitAsync(字节id、ushort位置、bool值) async任务WriteUshortAsync(

我有一个利用资源的WPF应用程序。此资源可通过两种方式使用:

  • IU事件。当用户单击视图的不同元素时,它会写入一个值
  • 在后台工作。定期读取各种数值
我在阅读过程中遇到问题,用户必须进行书写。我想堆叠对资源方法的调用,以便按顺序执行它们

以下是resource的方法:

  • 异步任务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这不是我要求的,但这是我以前想做的。对不起,重复了。