2010-05-01 6 views
1

Comment puis-je obtenir des données à partir de la base de données REMOTE à l'aide de la méthode OnStart?Comment utiliser ClearCanvas dans une base de données distante?

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); 
      } 
     }

-je utiliser OnStart dans le projet principal. Comment cn j'utilise ou appelle la méthode OnStart

Répondre

0

Juste une pensée, OnStart est un événement; si vous pouvez fournir StudyLoaderArgs certains comment, vous pouvez déplacer votre code dans Init(ApplicationEntity) méthode et l'appeler comme suit:

Init(myStudyArgs); 

et OnStart:

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

--EDIT--

  1. Déplacer existant corps OnStart() dans Init()

    void Init (ApplicationEntity ae) { EventResult résultat = événementRésultat.Succès; AuditedInstances loadedInstances = new AuditedInstances(); essayer {

    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. Appel Init() de OnStart()

    override int OnStart (StudyLoaderArgs studyLoaderArgs) { protégé ApplicationEntity ae = studyLoaderArgs.Server comme ApplicationEntity; _ae = ae; Init (ae); }

  3. OnStart() est un événement, et sera appelé au démarrage du service (en supposant qu'il s'agisse d'un service). Pour être plus précis, les événements ne sont pas là pour être appelés, plutôt les événements sont soulevés comme une notification que quelque chose est arrivé; tout ce que nous faisons, c'est gérer l'événement; c'est-à-dire enregistrer une méthode en tant que gestionnaire pour cet événement, puis cette méthode sera invoquée chaque fois que l'événement est déclenché.

Alors, pour atteindre voulez que vous voulez, vous pouvez appeler Init() plutôt que OnStart(); mais pour appeler Init() vous devrez fournir les arguments d'entrée, ce que dit ma première phrase - ou ce serait quelque chose comme OnStart(EventArgs.Empty);

Vous ne savez pas si cela répond à votre question, mais au-dessus de mon crâne! (0:

+0

Je ne comprends pas KMAN, pouvez-vous me donner quelques détails ??? – programmerist

+0

@Programmeur: S'il vous plaît voir mon edit en réponse à votre commentaire. –

Questions connexes