Desktop App/C#.Net

[C# .NET] static 함수에서 Control에 접근하기

Jade Choe 2021. 10. 19. 15:55
SMALL

로그를 눈에 보이게 처리해야 해서 TextBox에 로그를 남기는 함수를 만들었다.

근데.. static 함수에서는 this를 사용할 수 없다...

고민하던 중 생각난 해결책은 아래와 같다.


public partial class Form1 : Form
{
    public static Form1 instance;

    public Form1(){
        InitializeComponent();
        instance = this;
    }
    
    public static void func1(){
    	instance.Log("message");
    }
    
    private void Log(string Message)
    {
    	this.Invoke(new Action(() =>
        {
            try
            {
        	    tb_log.AppendText($"[{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}] {Message}\r\n");
            }
            catch (Exception ex)
            {
        	    Console.WriteLine(ex);
            }
        }));
    }
}


...

폼 자체를 싱글톤처럼 활용하는 것이다.

어차피 중복실행을 막아놔서 상관은 없을 듯 하다.

BIG