달력

5

« 2025/5 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
2014. 5. 16. 15:00

[C#]CrossThread 처리방법 학습/C#2014. 5. 16. 15:00

Cross Thread란

MainThread가 돌게되면서 다른 Control의 값 변경을 하려할때 되는 문제이다.



나는 프로그램을 돌리면서 ListBox에 결과값을 추가시키려 하여 발생한 문제였다.

내가 해결한 방법은

전역변수에 Delegate를 선언하고 ListBox에 Item을 추가시켜주는 메소드를 만들어서 해결하였다.


private delegate void SetListBoxCallback(string msg);

이런식으로 전역변수에 Delegate를 선언해주고


ListBox에 Item을 추가시켜줄 메소드를 하나만들었다.


private void SetListBox(string msg)             //crossThread방지를 위해 델리게이트선언

        {

            if (this.lb_result.InvokeRequired)

            {

                SetListBoxCallback setlistboxcallback = new SetListBoxCallback(SetListBox);

                this.Invoke(setlistboxcallback, new object[] { msg });

            }

            else

            {

                lb_result.Items.Add(msg);

            }

        }



SetListBox(string.Format("trid : {0} {1}", id, retVal ? "성공" : "실패"));

그리고 결과값을 추가시켜줄땐 메소드를 불러서 그 메소드가 Item을 Listbox에 추가시켜주게 하여 해결하였다.


'학습 > C#' 카테고리의 다른 글

IIS ApplicationPool 제어하기  (0) 2017.02.28
[C#]Tray 적용하기  (1) 2014.06.13
:
Posted by 쩡용