Я работаю над миграцией сервера с Microsoft Server 2008 R2 на Microsoft Server 2016. В фоновом режиме есть отдельный сервер, который управляет заданиями, выполняемыми на SAS. Мы используем ConcurrentDictionary для записи информации о работе. код отлично работает на старом сервере, но на новом сервере информация о задании исчезает из ConcurrentDictionary.
обновляется ConcurrentDictionary в функциях обратного вызова OnProgress и Oncomplete. Я попытался отладить код, но он не будет достигать точки останова в этих двух функциях. Если я сделаю эти функции общедоступными и добавлю ссылку в основной API, то обратный вызов не будет работать правильно. Далее я планирую попробовать использовать XML-файл для хранения информации о задании вместо ConcurrentDictionary. Но я бы предпочел посмотреть другие варианты, прежде чем вносить большие изменения в код.
OnProgress -
private void OnProgress(Messages.JobFeedback feedback)
{
operations.AddOrUpdate(feedback.JobId,
new SasJobsServiceOperation { Feedback = feedback },
(id, o) => { o.Feedback = feedback; return o; });
}
OnCompleted -
private void OnCompleted(Messages.JobFeedback feedback, string xmlResult)
{
operations.AddOrUpdate(feedback.JobId,
new SasJobsServiceOperation { Feedback = feedback, XmlResult = xmlResult },
(id, o) => { o.Feedback = feedback; o.XmlResult = xmlResult; return o; });
}
вызов функции -
this.callback.OnProgress(new Messages.JobFeedback
{
JobId = this.settings.Id,
PercentComplete = 1,
FeedbackMessage = "Starting Job on server",
Status = Messages.StatusCode.Running
});