2010-05-01 66 views
1

如何使用OnStart方法从REMOTE数据库获取数据?我如何在远程数据库中使用ClearCanvas?

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。如何使用cn或致电OnStart方法

回答

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. OnStart()呼叫Init()

    保护覆盖INT的OnStart(StudyLoaderArgs studyLoaderArgs) { ApplicationEntity AE = studyLoaderArgs.Server作为ApplicationEntity; _ae = ae;初始(ae); 初始(ae); }

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

那么,要实现希望你愿意,你可以拨打Init()而非OnStart();但打电话Init()你将不得不提供的输入参数,这是我第一句话说什么 - 或者它会是这样的OnStart(EventArgs.Empty);

不知道这是否回答你的问题,但我上面的头骨顶部! (0:

+0

我不明白KMAN;你能给我详情吗??? – programmerist 2010-05-01 15:29:55

+0

@程序员:请参阅我的编辑以回应你的评论。 – 2010-05-02 12:54:34