The*_*ght 6 .net c# windows-services installutil onstart
我有一个Windows服务,我已经编写了代码来在OnStart()事件中运行任务:
protected override void OnStart(string[] args)
{
this.DoTask();
}
private void DoTask()
{
Task task1 = Task.Factory.StartNew(() => this.OriginalFileProcessor.StartPolling());
try
{
Task.Wait(task1);
}
catch (Exception ex)
{
this.Log.Error("Failed running the task", ex);
}
}
Run Code Online (Sandbox Code Playgroud)
DoTask是一个永无止境的循环.它仅在服务停止时停止.
但是当我尝试启动服务时,它会等待很长时间然后给我以下错误:
Windows could not start the ... service on Local Computer.
Error 1053: The service did not respond to the start or control request in a timely fashion.
Run Code Online (Sandbox Code Playgroud)
怎么解决?
你为什么要等完你的任务?
我认为Task.Wait阻止你当前的线程,然后你在启动服务时遇到超时.
编辑:您需要删除此块:
try
{
Task.Wait(task1);
}
catch (Exception ex)
{
this.Log.Error("Failed running the task", ex);
}
Run Code Online (Sandbox Code Playgroud)
Task.Wait确实阻止了你当前的线程.根据MSDN:
Task.Wait方法
等待任务完成执行.
编辑2改为执行此操作
Task task1 = Task.Factory.StartNew(() => this.OriginalFileProcessor.StartPolling()).ContinueWith( t =>
{
var aggException = t.Exception.Flatten();
foreach(var ex in aggException.InnerExceptions)
this.Log.Error("Failed running the task", ex);
},
TaskContinuationOptions.OnlyOnFaulted);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6628 次 |
| 最近记录: |