Ненормальная задержка при запуске выполнения asyn c Метод задачи C# - PullRequest
1 голос
/ 31 января 2020

По истечении таймера я вызываю асинхронный метод c каждые 1,5 секунды.

В файле журнала я вижу разницу во времени в 300 мс между запуском TimerElapsed и методом SendMessage.

т.е. между «OnTimerElapsed: запущен» и «SendMessage: запущен».

Хотя это редко случается после того, как службы windows работают целый день.

private async void OnTimerElapsed(object source, ElapsedEventArgs e)
{
    SourceTrace.TraceVerbose("OnTimerElapsed : started");
    await SendMessage();
    SourceTrace.TraceVerbose("OnTimerElapsed : completed");         
}

public async Task SendMessage()
{
    SourceTrace.TraceVerbose("SendMessage: started");

    var sendTask = Send(); // start sending
    var getTask = GetData(); // update data
    await Task.WhenAll(sendTask, getTask);
}

Как я могу избавиться от такой необычно высокой задержки в 300-600 мс, возникающей редко и случайно?

  • Я также попытался запустить службу windows как процесс с высоким приоритетом.
  • . Net версия платформы - 4.7.1

Обновление : SourceTrace.TraceVerbose является оболочкой для System.Diagnostics TraceSource и TextWriterTraceListener. Обычно на запись журнала уходит 1-2 мс.

...