Как я могу использовать ClearCanvas в удаленной базе данных?
Как я могу получить данные из удаленной базы данных, используя метод OnStart?
protected override int OnStart(StudyLoaderArgs studyLoaderArgs)
{
ApplicationEntity ae = studyLoaderArgs.Server as ApplicationEntity;
_ae = ae;
EventResult result = EventResult.Success;
AuditedInstances loadedInstances = new AuditedInstances();
try
{
XmlDocument doc = RetrieveHeaderXml(studyLoaderArgs);
StudyXml studyXml = new StudyXml();
studyXml.SetMemento(doc);
_instances = GetInstances(studyXml).GetEnumerator();
loadedInstances.AddInstance(studyXml.PatientId, studyXml.PatientsName, studyXml.StudyInstanceUid);
return studyXml.NumberOfStudyRelatedInstances;
}
finally
{
AuditHelper.LogOpenStudies(new string[] { ae.AETitle }, loadedInstances, EventSource.CurrentUser, result);
}
}
Мне нужно использовать OnStart в основном проекте. Как я могу использовать или вызвать метод OnStart
1 ответ
Просто мысль, OnStart
это событие; если вы можете предоставить StudyLoaderArgs
как-то, тогда вы можете переместить свой код в Init(ApplicationEntity)
метод и вызвать его следующим образом:
Init(myStudyArgs);
И в OnStart
:
protected override int OnStart(StudyLoaderArgs studyLoaderArgs)
{
Init(StudyLoaderArgs.Server as ApplicationEntity);
}
--РЕДАКТИРОВАТЬ--
Переместить существующий
OnStart()
тело вInit()
void Init(ApplicationEntity ae) { EventResult result = EventResult.Success; AuditedInstances loadedInstances = new AuditedInstances(); пытаться {
XmlDocument doc = RetrieveHeaderXml(studyLoaderArgs); StudyXml studyXml = new StudyXml(); studyXml.SetMemento(doc); _instances = GetInstances(studyXml).GetEnumerator(); loadedInstances.AddInstance(studyXml.PatientId, studyXml.PatientsName, studyXml.StudyInstanceUid); return studyXml.NumberOfStudyRelatedInstances; } finally { AuditHelper.LogOpenStudies(new string[] { ae.AETitle }, loadedInstances, EventSource.CurrentUser, result); }
}
Вызов
Init()
отOnStart()
защищенное переопределение int OnStart(StudyLoaderArgs studyLoaderArgs) { ApplicationEntity ae = studyLoaderArgs.Server as ApplicationEntity; _ae = ae; Иниц (ае); }
OnStart()
является событием и будет вызываться при запуске службы (при условии, что это служба). Чтобы быть более конкретным, события не должны быть вызваны, скорее события вызываются как уведомление о том, что что-то произошло; все, что мы делаем, это обрабатываем событие; т.е. зарегистрировать метод в качестве обработчика для этого события, и тогда этот метод будет вызываться каждый раз, когда событие вызывается.
Итак, чтобы достичь желаемого, вы можете позвонить Init()
скорее, чем OnStart()
; но позвонить Init()
Вы должны будете предоставить входные аргументы, как говорится в моем первом предложении - или это будет что-то вроде OnStart(EventArgs.Empty);
Не уверен, что это ответ на ваш вопрос, но выше вершины моего черепа! (0: