본문 바로가기

IT_플밍

[C#, Unity3D] Invoke



시작하기

C# Invoke에 관해 적는다.


설명

자세한 내용은 마이크로소프트를 참고하자.


1
public object Invoke (Delegate method);
cs

컨트롤의 내부 창 핸들이 있는 스레드에서 지정된 대리자를 실행한다.

대리자에 실행될 메서드가 있다면 메서드가 실행, 아니면 null 반환.

호출되는 대리자의 반환 값은 Object  이며 재포장 되어 전달된다.(되는거 같다..)

만약 대리자에 반환 값이 없으면 null  이다.


1
public object Invoke (Delegate method, params object[] args);
cs

args 는 매개 변수에 있는 매개 변수의 수 및 형식과 동일한 매개 변수를 갖는 메서드의 대리자이다.

1
2
3
4
5
6
7
8
9
10
public delegate void AddListItem(String myString);
public AddListItem myDelegate;
 
myDelegate = new AddListItem(AddListItemMethod);
 
public class MyThreadClass
MyFormControl myFormControl1;
 
myFormControl1.Invoke(myFormControl1.myDelegate,
                                   new Object[] {myString});
cs


대리자는 C  또는 C++의 함수 포인터와 비슷하다. 대리자 개체는 참조된 함수를 호출 하는 코드 다음에 전달 할 수 있다. C 또는 C++ 함수 포인터와 달리 대리자는 객체지향이고 형식이 더욱 안전하다.


Unity3D에서 Invoke를 활용하는 법은 이 분의 에 잘 설명이 되있다. Unity3D에서도 비슷하게 작동한다.