接口怎么延时返回结果?

做一个售货机轮询的接口。
为了减少售货机的流量,需要在轮询时,如果未查到需要返回的数据时,
则要延时一段时间后再返回false,避免产生过多的轮询访问。
因为售货机是第三方的,只能控制接口返回时间来做这个限制。
然后之前我是直接写的look锁

    if (SlotNos.SlotNo == "0"){
        lock (string.Intern(SlotNos.MachineID))
        {//如果轮询为空,则延时10秒再返回
                Thread.Sleep(10000);
                return TJson(new { Status = 0 });
        }
    }

SlotNos.MachineID 这个是售货机编号 SlotNo是需要操作的货道号。
如果没有需要操作的货道号 我就延时返回结果
想问下 这么写会有问题吗? 如果这时候售货机有其他请求进来,会有影响吗
或者是会影响这个接口被其他售货机 或者被锁住的这台售货机访问吗?

SlotNos.MachineID主要看这里,会不会造成死锁。如果这是一个全局变量,不是没有可能。

不建议采用这个方法,正如你所顾虑的,Thread.Sleep会阻塞线程

实际上可以使用缓存机制,如果没有记录,在一段时间内(比如距离上次有记录10秒)就直接返回,不做数据查询,这样可以减轻服务器压力