1

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 メソッドを使用または呼び出す方法

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 = 新しい 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 に答える