如何创建一次只能从一个线程执行的异步方法?

时间:2017-11-25 10:16:11

标签: c# multithreading asynchronous locking

我有一个IO.Stream,我需要写,然后阅读。由于响应与发送的数据直接相关,因此我需要保持此方法并行执行,以保证其完整性。现在,我也希望这种方法是可以接受的,甚至可能吗?我将流包装成同步蒸汽,这将防止读写期间的干扰,但它不能保证保持正确的写入和读取操作顺序。我有点失去了如何实现这一点,因为如果我想使用async await方法,我无法锁定流。

2 个答案:

答案 0 :(得分:2)

您可以使用cmd.Parameters.Add("@Key", SqlDbType.Binary, binaryData.Length); //dont pass an array longer than what the table can store, or you'll get a "data would be truncated" error

SemaphoreSlim.WaitAsync

答案 1 :(得分:0)

感谢您的回答,我找到了另一种解决方案。我将send命令排入队列并将它们与现在在单独线程中读取的响应相匹配。由于写入和读取是串行的,因此可以按顺序安全地匹配它们。