webapi 异步返回

Posted 天道酬勤,商道酬信。

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了webapi 异步返回相关的知识,希望对你有一定的参考价值。

两年前我遇到一个难题:

https://q.cnblogs.com/q/78177

WebAPI中使用socket如果在server端回复了再返回值?

现在终于做出一种实现了:

 [HttpGet]
        public ApiActionResult OnceBackDemo()
        {
            var result = new ApiActionResult()
            {
                Success = false,
                Result = null,
                Message = "操作失败。"
            };
            System.Threading.ManualResetEvent mre = new System.Threading.ManualResetEvent(false);
            mre.Reset();
            Random rm = new Random();
            Action<Stopwatch> task = (sw) =>
            {
                sw.Start();
                int rm_val = rm.Next(1000);
                System.Threading.Thread.Sleep(rm_val);
            };
            var sw_out = new Stopwatch();
            task.BeginInvoke(sw_out, (ar) =>
            {
                task.EndInvoke(ar);
                mre.Set();
                sw_out.Stop();
                result.Success = true;
                result.Message = DateTime.Now + "->操作成功,耗时:" + sw_out.ElapsedMilliseconds.ToString()+"毫秒。";
            }, null);
            if (!mre.WaitOne(1500))
            {
                return result; 
            }
            return result;
        }

  

       

以上是关于webapi 异步返回的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Web API 的异步方法中返回 void

在 webapi 中使用异步等待的最佳实践

从 WEB API 控制器以异步方法返回 Void

异步任务片段背景数据

返回查询结果的异步流

这个异步任务方法有啥问题?