1

如何使用 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 方法

4

1 回答 1

0

只是一个念头,OnStart就是一个事件;如果您可以提供StudyLoaderArgs一些方法,那么您可以在Init(ApplicationEntity)方法中移动代码并调用它,如下所示:

Init(myStudyArgs);

并在OnStart

protected override int OnStart(StudyLoaderArgs studyLoaderArgs)
{
    Init(StudyLoaderArgs.Server as ApplicationEntity);
}

- 编辑 -

  1. 将现有实体OnStart()移入Init()

    void Init(ApplicationEntity ae) { EventResult 结果 = 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);
    }
    

    }

  2. 来自Init()_OnStart()

    protected override int OnStart(StudyLoaderArgs studyLoaderArgs) { ApplicationEntity ae = studyLoaderArgs.Server as ApplicationEntity; _ae = ae; 初始化(ae);}

  3. OnStart()是一个事件,将在服务启动时调用(假设它是一个服务)。更具体地说,事件不在那里被调用,而是作为事件发生的通知引发事件;我们所做的只是处理事件;即注册一个方法作为该事件的处理程序,然后每次引发事件时都会调用该方法。

所以,要实现你想要的,你可以调用Init()而不是OnStart();但是要打电话给Init()你,你必须提供输入参数,这就是我的第一句话所说的 - 或者它会像OnStart(EventArgs.Empty);

不确定这是否回答了你的问题,但在我的头骨之上!(0:

于 2010-05-01T11:54:03.997 回答