첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
본 블로그는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 블로그 콘텐츠 향상을 위해 쓰여집니다.

728x90
반응형
728x170

▶ 크로스 스레드(Cross Thread) 처리하기 예제

using System.Windows.Forms;
private TextBox textBox;

...

this.textBox.ExecuteUIThread(control => { control.Text = "SOME MESSAGE"; });

 

▶ 크로스 스레드(Cross Thread) 처리하기

using System.ComponentModel;

/// <summary>
/// 컨트롤 확장
/// </summary>
public static class ControlExtension
{
    //////////////////////////////////////////////////////////////////////////////////////////////////// Delegate
    //////////////////////////////////////////////////////////////////////////////// Public

    #region UI 스레드 실행하기 대리자 - ExecuteUIThreadDelegate

    /// <summary>
    /// UI 스레드 실행하기 대리자
    /// </summary>
    /// <typeparam name="T">객체 타입</typeparam>
    /// <param name="source">소스 객체</param>
    public delegate void ExecuteUIThreadDelegate<T>(T source) where T : ISynchronizeInvoke;

    #endregion

    //////////////////////////////////////////////////////////////////////////////////////////////////// Method
    ////////////////////////////////////////////////////////////////////////////////////////// Static
    //////////////////////////////////////////////////////////////////////////////// Public

    #region UI 스레드 실행하기 - ExecuteUIThread<T>(source, executeUIThreadDelegate)

    /// <summary>
    /// UI 스레드 실행하기
    /// </summary>
    /// <typeparam name="T">객체 타입</typeparam>
    /// <param name="source">소스 객체</param>
    /// <param name="executeUIThreadDelegate">UI 스레드 실행하기 대리자</param>
    public static void ExecuteUIThread<T>(this T source, ExecuteUIThreadDelegate<T> executeUIThreadDelegate) where T : ISynchronizeInvoke
    {
        if(source.InvokeRequired)
        {
            source.Invoke(executeUIThreadDelegate, new object[] { source });
        }
        else
        {
            executeUIThreadDelegate(source);
        }            
    }

    #endregion
}
728x90
반응형
그리드형
Posted by 사용자 icodebroker

댓글을 달아 주세요