简体   繁体   English

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

[英]How can i use ClearCanvas in remote database?

How can i get data from REMOTE database using OnStart method? 如何使用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);
            }
        }

i need to use OnStart in main project. 我需要在主项目中使用OnStart。 How cn i use or call OnStart method 我如何使用或调用OnStart方法

Just a thought, OnStart is an event; 只是想一想, OnStart是一个事件。 if you can provide the StudyLoaderArgs some how, then you can move your code in Init(ApplicationEntity) method and call it like following: 如果您可以为StudyLoaderArgs提供一些操作方法,则可以在Init(ApplicationEntity)方法中移动代码并按如下方式调用它:

Init(myStudyArgs);

and in OnStart : 并在OnStart

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

--EDIT-- - 编辑 -

  1. Move existing OnStart() body in Init() Init()移动现有的OnStart()主体

    void Init(ApplicationEntity ae) { EventResult result = EventResult.Success; void Init(ApplicationEntity ae){EventResult结果= EventResult.Success; AuditedInstances loadedInstances = new AuditedInstances(); AuditedInstances loadInstances = 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); } 

    } }

  2. Call Init() from OnStart() OnStart()调用Init() OnStart()

    protected override int OnStart(StudyLoaderArgs studyLoaderArgs) { ApplicationEntity ae = studyLoaderArgs.Server as ApplicationEntity; 受保护的重写int OnStart(StudyLoaderArgs studyLoaderArgs){ApplicationEntity ae = studyLoaderArgs.Server as ApplicationEntity; _ae = ae; _ae = ae; Init(ae); 初始化(ae); } }

  3. OnStart() is an event, and would be called upon service(assuming that it is a service) start. OnStart()是一个事件,将在service(假设它是服务)启动时被调用。 TO be more specific, events are not there to be called, rather events are raised as a notification that something has happened; 更具体地说,事件不是要被调用的,而是将事件作为已发生的通知来引发。 all we do is handle the event; 我们要做的就是处理事件; ie register a method as a handler for that event, and then that method will be invoked each time the event is raised. 例如,将一个方法注册为该事件的处理程序,然后在每次引发该事件时都将调用该方法。

So, to achieve want you want, you can call Init() rather than OnStart() ; 因此,要实现您想要的目标,可以调用Init()而不是OnStart() but to call Init() you will have to provide the input arguments, which is what my first sentence says - or it'd be something like OnStart(EventArgs.Empty); 但是要调用Init()您将必须提供输入参数,这就是我的第一句话所说的-或类似OnStart(EventArgs.Empty);类的东西OnStart(EventArgs.Empty);

Not sure if this answers your question, but above the top of my skull! 不知道这是否能回答您的问题,但是在我的头顶上方! (0: (0:

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM