如何在远程数据库中使用ClearCanvas?

时间:2010-05-01 07:19:26

标签: c# .net visual-studio visual-studio-2008 clearcanvas

如何使用OnStart方法从REMOTE数据库获取数据?

 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 个答案:

答案 0 :(得分: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 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);
    }
    

    }

  2. Init()

    致电OnStart()

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

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

  4. 因此,要达到您想要的效果,您可以拨打Init()而不是OnStart();但要调用Init(),你必须提供输入参数,这是我的第一句话所说的 - 或者它类似于OnStart(EventArgs.Empty);

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