在 C# Web API 中,可以使用锁和线程等待来实现让方法执行完毕后才能继续被调用的功能。以下是示例代码:

public class MyController : ApiController
{
    private readonly object _lock = new object();

    [HttpPost]
    public IHttpActionResult MyMethod()
    {
        lock (_lock)
        {
            //执行需要同步的代码
        }
        return Ok();
    }
}

在上述示例代码中,使用了一个对象锁来保证同步执行需要同步的代码。当有多个请求同时调用MyMethod方法时,只有一个请求能够获取到锁,执行完需要同步的代码后才会释放锁,其他请求则会等待锁的释放。

另外,也可以使用ManualResetEvent类来实现线程等待的功能。以下是示例代码:

public class MyController : ApiController
{
    private readonly ManualResetEvent _event = new ManualResetEvent(true);

    [HttpPost]
    public IHttpActionResult MyMethod()
    {
        _event.WaitOne();
        try
        {
            //执行需要同步的代码
        }
        finally
        {
            _event.Set();
        }
        return Ok();
    }
}

在上述示例代码中,使用了ManualResetEvent类来实现线程等待的功能。当有多个请求同时调用MyMethod方法时,只有一个请求能够进入try代码块执行需要同步的代码,其他请求则会在WaitOne方法处等待。当执行完需要同步的代码后,会调用Set方法释放锁,其他请求则会进入try代码块执行需要同步的代码。


原文地址: https://www.cveoy.top/t/topic/oR2W 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录