C#에서 해당 스레드가 생성한 폼을 다른 스레드에서 접근하게되면 Cross Thread Problem 이 발생하게 된다.
물론 특별한 오류가 없이 돌아가는 경우도 있지만 내부적으로 문제점이 분명이 존재하기때문에 이런 오류사항들은 반드시 유의 해야한다.
그래서 C#에서는 Invoke를 사용하는데 이에 간략하게 중요한 내용을 메모해 본다.
<사용법>
1. 해당 컨트롤의 CheckForIllegalCrossThreadCalls 속성 값을 False로 설정하여 예외를 제외 시킨다.
->간단한 방법이긴하지만 안전하게 제어하기위해서는 비추...
2. 기본적인 Invoke사용법은
2-1. 인자가 있는 메소드일 경우
delegate void
SetProgressValueCallback(int Value);
private void SetValueProgress(int
Value)
{
if (this.Progressbar1.InvokeRequired) //
InvokeRequired 속성은 Invoke 메소드의
사용해야하는지 알려준다.
{
this.Invoke(new
SetProgressValueCallback(SetProValue), new object[] { Value});
}
else
{
this.Progressbar1.Value = Value;
}
}
private
void SetProValue(int Value)
{
this.Progressbar1.Value = Value;
}
'C# > C# Windows Form' 카테고리의 다른 글
C# 텍스트박스 원하는 값만 입력받기. (0) | 2016.11.06 |
---|---|
간단한 예제 (0) | 2016.09.19 |
C# string 문자열 (0) | 2016.08.03 |
C# 오라클 데이터베이스 사용 (0) | 2016.07.15 |
C# Textbox 숫자만 입력 (0) | 2016.07.11 |