1
我已經制作了一個有趣的行爲,我無法解決這個小程序。 這個想法就像是一個調度程序,它會在特定的時間過後執行一個命令。一切都按預期工作,但是當我去關閉服務時,我意識到了一些事情。 1.服務需要很長時間才能關閉。有時超過30分鐘,我也必須殺死PID。 2.服務運行時間越長,關機時間越長。我認爲這與命令執行的次數有關。 3.我認爲每次迭代之間的間隔越短越容易關閉服務。Windows服務不會停止
這是我使用的代碼。
public void Start()
{
_cancellationToken = new CancellationTokenSource();
var token = _cancellationToken.Token;
_pollingTask = Task.Factory.StartNew(
() =>
{
while (true)
{
try
{
Log.Debug("Call Import PDF");
ConnectUncPaths();
ImportPdf();
Thread.Sleep(Intervall * 60000);
if (token.IsCancellationRequested)
break;
}
catch (Exception)
{
DissconnectUncPaths();
}
}
}, token, TaskCreationOptions.LongRunning, TaskScheduler.Current);
}
public void Stop()
{
_cancellationToken.Cancel();
_pollingTask.Wait();
}
這裏是一個截圖
'Thread.Sleep(Intervall * 60000);' - 不是一個好主意。 –
如果僅僅是因爲即使一個10的「間隔」意味着10分鐘的等待... –
檢查http://stackoverflow.com/a/12886071/2224701 –