Просто мысль, OnStart
- это событие; если вы можете предоставить StudyLoaderArgs
каким-то образом, то вы можете переместить свой код в метод Init(ApplicationEntity)
и вызвать его следующим образом:
Init(myStudyArgs);
и OnStart
:
protected override int OnStart(StudyLoaderArgs studyLoaderArgs)
{
Init(StudyLoaderArgs.Server as ApplicationEntity);
}
- EDIT -
Переместить существующее OnStart()
тело в Init()
void Init (ApplicationEntity ae)
{
EventResult result = EventResult.Success;
AuditedInstancesloadedInstances = 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: