internal partial class RavenService : ServiceBase
{
 private RavenDbServer server;
 private Task startTask;
 public RavenService()
 {
  InitializeComponent();
 }
 protected override void OnStart(string[] args)
 {
  //单独开启一个线程启动服务
  startTask = Task.Factory.StartNew(() =>
  {
   try
   {
    server = new RavenDbServer(new RavenConfiguration());
   }
   catch (Exception e)
   {
    EventLog.WriteEntry("RavenDB service failed to start because of an error" + Environment.NewLine + e, EventLogEntryType.Error);
    Stop();
   }
  });
  //等待20秒还没有启动则提示
  if(startTask.Wait(TimeSpan.FromSeconds(20)) == false)
  {
   EventLog.WriteEntry(
    "Startup for RavenDB service seems to be taking longer than usual, moving initialization to a background thread",
    EventLogEntryType.Warning);
  }
 }
 protected override void OnStop()
 {
  //异步等待销毁服务
  startTask.ContinueWith(task =>
  {
   if (server != null)
    server.Dispose();
   return task;
  }).Wait();
 }
}

RavenDb中的Task异步应用.Net4相关推荐

  1. Android中的AsyncTask异步任务的简单介绍

    事件原由: 很多耗时的资源在安卓客户端加载时,必须要开启一个新的线程去操作维护,而如果直接在主线程中加载的话,客户端会直接报出异常,导致程序不能正常使用,而子线程无法直接更新UI,因此客户端提供了   ...

  2. mysql异步task_EasySwoole高性能task异步任务

    EasySwoole高性能task异步任务 羡仙. • 2019 年 06 月 20 日 和上一篇一样也是遗漏的重要文章,我太聪明了,这都能发现...他们都有共同的特征:笔记里的开头在上一篇...不管 ...

  3. ajax异步查询demo,ASP.NET中AJAX的异步加载(Demo演示)

    此次的demo是一个页面,页面上有两行字,然后后面用ajax,使用一个下拉框去替换第一行文字[/code] 第一个是被替换的网页 var xmlhttprequest; function create ...

  4. 深入理解gradle中的task

    文章目录 简介 定义task tasks 集合类 Task 之间的依赖 定义task之间的顺序 给task一些描述 task的条件执行 task rule Finalizer tasks 总结 简介 ...

  5. Android中的AsyncTask异步任务的简单实例

    在  Android中的AsyncTask异步任务的简单介绍 一文中,已经对 安卓 异步任务操作做了简单的介绍,这里,直接将上文中的异步任务做了一个实例,实现异步操作更新UI线程,相比开启子线程更新来 ...

  6. php异步查询数据库,php中mysql数据库异步查询实现

    问题 通常一个web应用的性能瓶颈在数据库.因为,通常情况下php中mysql查询是串行的.也就是说,如果指定两条sql语句时,第二条sql语句会等到第一条sql语句执行完毕再去执行.这个时候,如果执 ...

  7. C# Task异步编程

    1.不适用异步的示例 using System; using System.Collections.Generic; using System.Linq; using System.Text; usi ...

  8. Proxmox VE中出现TASK ERROR: command ‘apt-get update‘ failed: exit code 100的解决方法

    Proxmox VE中出现TASK ERROR: command 'apt-get update' failed: exit code 100的解决方法 参考文章: (1)Proxmox VE中出现T ...

  9. worker进程和task进程区别_swoole中使用task进程异步的处理耗时任务

    我们知道,swoole中有两大进程,分别是 master 主进程和 manager 管理进程. 其中 master 主进程中会有一个主 reactor 线程和多个 reactor 线程,主要的作用就是 ...

最新文章

  1. HDU 1090 A+B for Input-Output Practice (II)
  2. 推荐:微服务架构的深度解析!
  3. Shell脚本(学习笔记1)
  4. 原生js判断css动画结束 css 动画结束的回调函数
  5. HDU4825 Xor Sum 01字典树(Tire Tree)
  6. TD-SCDMA成为我国通信行业标准
  7. ubuntu18.04安装opencv4.3.0
  8. java 课后习题 键入日期输入星期几
  9. 多所“双一流”明确将扩招!清华、上交、哈工大等也做出回应
  10. 中国电信5G套餐用户渗透率达到50.4%
  11. 大众CEO称市场有足够资金,支持建设6座大型电池工厂
  12. TCP/IP之路由算法
  13. flex图表坐标轴样式设置
  14. 孙鑫VC学习笔记:第十一讲 (六) 图形重绘方法二 利用元文件
  15. Servlet3异步原理
  16. mysql 删除表的方法_MySQL 删除表的三种方式
  17. 常见快速搜索算法图解
  18. Json Schema 是什么?
  19. 中国农大计算机保研,中国农业大学2021届保研情况
  20. 大数据发展趋势十个大方向

热门文章

  1. 前端学习(1877)vue之电商管理系统电商系统之头部布局
  2. 前端学习(1677):前端系列实战课程之游戏初始化
  3. 前端学习(1184):数据绑定指令
  4. java学习(157):线程的引入
  5. java学习(59):static修饰内部类
  6. Python isalpha()方法
  7. windows下python安装
  8. 串口字符传输时间计算
  9. 诺基亚7原生android,【诺基亚7Plus评测】系统:简洁原生安卓功能却不简单_诺基亚 7 Plus(4GB RAM/全网通)_手机评测-中关村在线...
  10. python调用数据库数据类型_Python使用Mysql官方驱动(取出dict类型的数据)