평가 프로젝트를 생성 요청하면 평가 대상 프로세스의 메인 창의 자동화 요소를 검색을 진행합니다. 그런데 검색할 자동화 요소가 많으면 많은 시간을 소요하여 동기식으로 진행하면 평가자는 프로그램이 멈춰있는 것으로 착각할 수 있습니다. 이러한 이유로 이 작업을 비동기식으로 진행할 것입니다.
평가 프로젝트를 생성 요청한 곳에서는 이러한 작업이 끝난 것을 알 수 있어야 하는데 이를 위해 이벤트처리를 할 것입니다. 이를 위해 이벤트 인자와 대리자 형식을 정의합시다.
public class MakeProjectEventArgs:EventArgs {
평가 프로젝트 개체인 AccEvalProject를 가져오기 할 수 있는 속성을 제공합니다.
public AccEvalProject AccEvalProject{ get; private set; }
평가 프로젝트 제목을 쉽게 가져오기 할 수 있는 속성을 제공합니다.
public string Title { get { if (AccEvalProject == null) { return string.Empty; } return AccEvalProject.Title; } }
평가 프로젝트의 검색 과정에서 정보 DataTable을 가져오기 할 수 있는 속성을 제공합니다.
public DataTable Table { get { if (AccEvalProject == null){ return null; } return AccEvalProject.Table; } } }
평가 대상 프로세스를 래핑한 EHProcess 개체를 가져오기 할 수 있는 속성을 제공합니다.
public EHProcess EHProcess { get { if (AccEvalProject == null){ return null; } return AccEvalProject.EHProcess; } }
생성자에서는 AccEvalProject 개체를 인자로 받아 속성을 설정합니다.
internal MakeProjectEventArgs(AccEvalProject aeproject) { AccEvalProject = aeproject; }
ToString 메서드를 재정의하여 평가 프로젝트 제목을 반환합시다.
public override string ToString() { return Title; } }
대리자 형식도 정의합니다.
public delegate void MakeProjectEventHandler(object sender,MakeProjectEventArgs e);
using System; using System.Data; namespace 접근성_평가_도우미 { public class MakeProjectEventArgs:EventArgs { public AccEvalProject AccEvalProject { get; private set; } public string Title { get { if (AccEvalProject == null) { return string.Empty; } return AccEvalProject.Title; } } public DataTable Table { get { if (AccEvalProject == null) { return null; } return AccEvalProject.Table; } } public EHProcess EHProcess { get { if (AccEvalProject == null) { return null; } return AccEvalProject.EHProcess; } } internal MakeProjectEventArgs(AccEvalProject aeproject) { AccEvalProject = aeproject; } public override string ToString() { return Title; } } public delegate void MakeProjectEventHandler(object sender,MakeProjectEventArgs e); }
[소스 10.8] MakeProjectEventArgs.cs