zoukankan      html  css  js  c++  java
  • 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;
            }
    

      

           

  • 相关阅读:
    设计模式之单例模式
    Java反射之调用内部类
    Java反射之修改常量值
    myBatis之入门示例
    eclipse创建maven工程
    java核心卷轴之集合
    java核心卷轴之泛型程序设计
    sublime常用快捷键
    sublime使用package control安装插件
    sublime使用技巧之添加到右键菜单、集成VI
  • 原文地址:https://www.cnblogs.com/datacool/p/datacool_2017_webapi.html
Copyright © 2011-2022 走看看