Я унаследовал некоторые старые услуги Windows, которые были обновлены до .NET Core 8. Эти услуги будут лучше описаны как запланированные задачи. Они не вводят вклад, но убедитесь, что процесс работает в определенное время. Например, есть проверка, чтобы увидеть, были ли файлы, созданные процессом, отправлены в их пункт назначения. Это логическое значение, и единственное место, где его можно настроить, находится внутри процесса, который перемещает файлы. Я обнаружил, что в результате дополнительного регистрации это значение уже установлено на True, так как оно кэшируется от предыдущего запуска процесса. Это, в свою очередь, пропускает отправку файлов в пункт назначения, и все, к которому это ведет. В данный момент я прибегал к запланированной задаче для перезапуска службы один раз в день. Это избавилось от проблемы с кэшированием, но я пытаюсь понять, откуда это происходит в первую очередь. Информация, которую я имею в моих журналах, и журнал событий ничего не показывает мне, и я действительно не уверен, как выяснить, что здесь происходит. Ниже приведен метод задачи ExecuteAsync и содержимое программы .cs:
{executeAsync}
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
int delay = 10;
try
{
if (this.configuration != null)
{
int counter = 1;
string workerName = $"WorkerProcess_{counter}";
Thread threadWorker = new Thread(() => this.DoWork(workerName, lockObj: lockOn))
{
IsBackground = false
};
threadWorker.Name = workerName;
threadList.Add(threadWorker);
if (this.configuration != null)
{
if (threadList != null)
{
try
{
threadList.ForEach(x => { x.Start(); });
do
{
counter = 0;
threadList.ForEach(x =>
{
if (x.ThreadState == ThreadState.Running)
{
x.Join();
counter++;
}
});
if (counter == 0)
{
threadList = new List();
}
} while (counter > 0);
}
catch (Exception e)
{
_logger.LogError($"{GetType().FullName}.ExecuteAsync() error occured {e.ToString()}");
}
}
}
}
if (stoptriggered == false)
{
await Task.Delay(delay, stoppingToken);
}
else
{
_workLauncher.OnStop();
_logger.LogInformation($"{GetType().FullName}.ExecuteAsync() - breaking indefinite While loop for service terminitation. ");
}
}
catch (TaskCanceledException tce) when (stoppingToken.IsCancellationRequested)
{
_logger.LogInformation(tce.Message);
}
catch (Exception ex) when (stoppingToken.IsCancellationRequested)
{
_logger.LogError(ex.Message);
}
catch (Exception ex) when (!stoppingToken.IsCancellationRequested)
{
_logger.LogError($"{GetType().FullName}.ExecuteAsync() error occured {ex?.ToString()}");
}
finally
{
}
}
IConfiguration configuration;
var environment = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT");
IHost host = Host.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((context, config) =>
{
config.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddJsonFile($"appsettings.{environment}.json", optional: true, reloadOnChange: true)
.AddEnvironmentVariables();
configuration = config.Build();
})
.ConfigureServices(services =>
{
services.AddTransient();
})
.ConfigureLogging(logger => {
logger.AddConsole();
})
.UseWindowsService()
.Build();
await host.RunAsync();
Подробнее здесь: https://stackoverflow.com/questions/797 ... nd-service
Неожиданное кэширование в фоновой службе C# ⇐ C#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Проблема с вызовом метода службы в фоновой службе .NET, проблема с областью действия
Anonymous » » в форуме C# - 0 Ответы
- 17 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Приложение Android с PhoneGap, которая запускает WebSocket в фоновой службе
Anonymous » » в форуме JAVA - 0 Ответы
- 3 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Приложение Android с PhoneGap, которая запускает WebSocket в фоновой службе
Anonymous » » в форуме Android - 0 Ответы
- 3 Просмотры
-
Последнее сообщение Anonymous
-