APM 模式1

class Calculator
    {
        public IAsyncResult BeginCalculate(AsyncCallback ac, object state)
        {
            Console.WriteLine("Calling BeginCalculate on thread {0}", Thread.CurrentThread.ManagedThreadId);
            Task<string> f = Task<string>.Factory.StartNew(x => Compute(), state);
            if (ac != null)
            {
                f.ContinueWith(x => ac(f));
            }
            return f;
        }

        public string Compute()
        {
            Console.WriteLine("Calling compute on thread {0}", Thread.CurrentThread.ManagedThreadId);
            Thread.Sleep(5000);
            return "3.14159265358979323846264338327950288";
        }

        public string EndCalculate(IAsyncResult ar)
        {
            Console.WriteLine("Calling EndCalculate on thread {0}", Thread.CurrentThread.ManagedThreadId);
            return ((Task<string>)ar).Result;
        }
    }
static void Main(string[] args)
        {
            Calculator calc = new Calculator();

            AsyncCallback callBack = new AsyncCallback(PrintResult);
            IAsyncResult ar = calc.BeginCalculate(callBack, calc);


            Console.WriteLine("Working...");
            Thread.Sleep(2000);
            Console.ReadLine();
        }

        public static void PrintResult(IAsyncResult result)
        {
            Calculator c = result.AsyncState as Calculator;
            if (c == null) return;

            string piString = c.EndCalculate(result);

            Console.WriteLine("Calling PrintResult on thread {0}; result = {1}",
                        Thread.CurrentThread.ManagedThreadId, piString);
        }

AsyncCallback callBack = new AsyncCallback(PrintResult);

是一个实例化的异步委托回调函数,其实可以直接用

IAsyncResult ar = calc.BeginCalculate(iar => PrintResult(iar), calc);

的方式执行 。参考:https://docs.microsoft.com/zh-cn/dotnet/standard/parallel-programming/tpl-and-traditional-async-programming

如何:使用 Async 和 Await 并行发起多个 Web 请求 (C#):

https://docs.microsoft.com/zh-cn/dotnet/csharp/programming-guide/concepts/async/how-to-make-multiple-web-requests-in-parallel-by-using-async-and-await

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
APM无人船留待模式是指无人船在特定位置或区域停留等待指令的一种工作模式。这种模式可以实现无人船在海洋等水域上的静止或固定位置操作。 无人船的留待模式可以在许多应用场景中发挥重要作用。首先,在科学研究中,无人船可以被设定为在特定位置停留一段时间,以进行海洋环境和生物学数据的收集和监测。这对于海洋生态系统的研究和保护非常有意义。其次,在海上安全领域,无人船的留待模式可以被用于监测和巡逻海域,从而增强海上交通管理和海岸安全。此外,无人船的留待模式还可以应用于海上油气田的勘探和生产,实现对海上设施的稳定监测和操作。 实现APM无人船的留待模式需要依靠先进的导航和控制系统。一般情况下,无人船会通过全球定位系统(GPS)等技术确定自身的位置,并通过自主导航系统时刻监测和校正位置和姿态。当船只接收到留待指令时,它将根据预设的参数和算法进行控制,以保持稳定的位置和姿态。例如,采用动态定位技术,无人船可以利用定位参考点和环境传感器进行精确定位和校准。 总体而言,APM无人船留待模式为海洋相关领域带来了许多潜在的应用和好处。它可以实现长时间运行、高效稳定的无人船操作,为海洋研究、安全监测和资源开发等提供技术支持,为相关领域的发展创造更多机会。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值