Click or drag to resize
XDL

XThread Class

XThread클래스는 Thread에 대한 컨트롤 우선순위, 상태등을 정의한다.
Inheritance Hierarchy
SystemObject
  Pixoneer.NXDLXThread

Namespace: Pixoneer.NXDL
Assembly: NXDL (in NXDL.dll) Version: 2.0.3.38
Syntax
C#
public class XThread : IDisposable

The XThread type exposes the following members.

Constructors
 NameDescription
Public methodXThread XThread에 대한 기본 생성자로서, 멤버들을 초기화한다.
Top
Properties
 NameDescription
Public propertyPriority Thread의 우선 순위를 설정하거나 얻는다.
Public propertyTerminated Thread가 종료되었는지 여부를 설정하거나 얻는다.
Top
Methods
 NameDescription
Public methodGetPercentRange 퍼센트의 범위를 얻는다.
Public methodGetThreadID Thread ID를 얻는다.
Public methodIsValid Thread가 유효한지 여부를 체크한다.
Public methodProcess 쓰레드의 로직이 들어가는 함수로, 상속을 받아 사용자의 로직을 포함한다.
Public methodResume Thread가 멈춤 상태에 있을때 다시 시작한다.
Public methodSendMessageFail 프로세스가 실패시 이벤트를 발생시키기 위해 이 함수를 호출한다.
Public methodSendMessagePercent Percent에 대한 메시지를 전송한다.
Public methodSendMessageSuccess 프로세스가 성공시 이벤트를 발생시키기 위해 이 함수를 호출한다.
Public methodSetPercentRange 프로세스에서 전송하는 퍼센트의 범위를 설정한다.
Public methodSetThreadStop 실행 중인 thread를 종료할 것을 설정한다.
Public methodTerminate Thread를 종료한다.
Top
Events
 NameDescription
Public eventOnFail Thread에서 프로세스가 실패한 경우 발생하는 이벤트.
Public eventOnPercent Thread에서 프로세스의 퍼센트가 업데이트 되었을때 발생하는 이벤트.
Public eventOnProcess Thread에서 프로세스가 진행될 때 발생하는 이벤트.
Public eventOnSuccess Thread에서 프로세스가 성공적으로 종료된 경우 발생하는 이벤트.
Top
Example
This is example #1:
C#
public partial class FormThread : Form
{
    public XThread m_Thread;

    public FormThread()
    {
        InitializeComponent();

        m_Thread = new XThread();
        m_Thread.OnPercent += new XThreadMessagePercent(OnPercentUpdateProgressBar);
        m_Thread.OnPercent += new XThreadMessagePercent(OnPercentUpdateText);
        m_Thread.OnSuccess += new XThreadMessageSuccess(OnSuccess);
        m_Thread.OnProcess += new XThreadProcess(Process0);
    }

    private void FormThread_Load(object sender, EventArgs e)
    {

    }

    public void OnPercentUpdateProgressBar(XThread thd, int percent)
    {
        if (this.progressBar1.InvokeRequired)
        {
            XThreadMessagePercent d = new XThreadMessagePercent(OnPercentUpdateProgressBar);
            this.Invoke(d, new object[] { thd, percent });
        }
        else
        {
        }
    }

    public void OnPercentUpdateText(XThread thd, int percent)
    {
    }

    public void OnSuccess(XThread thd)
    {
        m_Thread.SendMessagePercent(0);
        MessageBox.Show("Success");
        CloseProgressFormByThd();
        m_Thread.Terminated = false;
    }

    delegate void delCloseForm();
    public void CloseProgressFormByThd()
    {
        if (this.InvokeRequired)
        {
            delCloseForm d = new delCloseForm(this.Close);
            this.Invoke(d, new object[] { });
        }
    }

    public bool Process0(XThread thd)
    {
        // Thread process.... 
        return true;
    }

    private void btnStop_Click(object sender, EventArgs e)
    {
        m_Thread.SetThreadStop();
    }

    private void FormThread_FormClosed(object sender, FormClosedEventArgs e)
    {
        m_Thread.Terminate();
    }
}
See Also