2010-07-30 2 views
3

저는 현재의 프로젝트의 IPC를 처리하기 위해 비동기 함수 호출과 함께 .net remoting을 사용하고 있습니다. 나는에 대한 클라이언트 싶습니다 내가 문제로 실행 해요AsyncCallback은 정적이 아닌 대리자를 사용할 수 있습니까?

: 비동기 호출이 완료되면

  1. 비동기
  2. 가 GUI를로드 계속 정보 요청을
  3. 의에로드 GUI

다음 코드

GetFileTextDelegate ^svd  = gcnew GetFileTextDelegate(obj, &BaseRemoteObject::GetFileText); 
    AsyncCallback  ^callback = gcnew AsyncCallback(RecievedSomething); 
    IAsyncResult  ^arValSet = svd->BeginInvoke(callback, nullptr); 
이 작업을 수행

위 예제에서 RecievedSomething은이 예제에서 정적 메서드 여야합니다. 왜 그런가요? 이 함수를 비 정적으로 만들 수 있다면 GUI를로드 할 수 있습니다.

내 솔루션은 내 gui가 구독하는 정적 이벤트에서 RecievedSomething을 실행하는 것입니다. 이것은 이제 2 대의 델리게이트와 이벤트가 내 1 비동기 함수 호출을 처리하도록해야한다는 번거 로움입니다.

비 정적 함수로 AsyncCallback을 사용할 수 있습니까?

감사합니다.

+0

+1을 사용하십시오. -1은 C# 태그를 사용한 다음 C++ CLI 코드를 작성하는 데 사용됩니다. 나는 부끄럽고 못생긴 엉망인 C++ CLI를 보면서 바다가 보인다. – Tergiver

답변

3

AsyncCallback 대리인에 비 정적 메서드를 사용할 수 있습니다. 그냥 정확하게 지정해야합니다. 예를 들어, 잘 쓰여진 질문의 경우 this->ReceivedSomething :

AsyncCallback ^callback = gcnew AsyncCallback(this, &MyClassType::RecievedSomething); 
+0

나는 이것을 아침 일찍 시험해 볼께, 고마워! 저는 두 개와 두 개를 합치 지 않고 AsyncCallback이 단지 델리게이트이고, 생성자가 하나처럼 동작해야한다는 것을 알고 있습니다. – greggorob64