RavenDb中的Task异步应用.Net4
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的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: P1552 [APIO2012]派遣
- 下一篇: .Net DES加密解密(不带向量)