2013-05-24 4 views
0

나는 서버를 통해 AMF3 데이터를 보내고 받기 위해 FluorineFx를 사용하고 있습니다.C# 클래스를 반환하십시오

netConnection.Call("my-amf", "zend", "Ka_Services_Park", "getCompleteParkOfUser", new GetCustomersHandler(), new object[] { "msg_2580671638", "20251876" }); 

    public class GetCustomersHandler : IPendingServiceCallback 
    { 
     public void ResultReceived(IPendingServiceCall call) 
     { 
      object result = call.Result; 
     } 
    } 

은 내가 GetCustomersHandler에서 Form1에/돌아 응답 (객체 결과를) 싶어, 내가 Form1 클래스에 netConnection.Call에 GetCustomersHandler라고 를 불렀다에서 클래스 클래스 GetCustomersHandler에서 응답을 반환하고자합니다.

+1

를 검색 할 수 있습니다 메소드 호출)은 그들이 얼마나 빨기를하는지 깨닫는 순간입니다. –

답변

1

콜백 객체에 결과를 속성으로 저장하십시오.

public class GetCustomersHandler : IPendingServiceCallback 
{ 
    GetCustomersHandler() 
    { 
     this.Signal = new ManualResetEvent(false); 
    } 

    public void ResultReceived(IPendingServiceCall call) 
    { 
     this.Result = call.Result; 
     this.Signal.Set(); 
    } 

    public ManualResetEvent Signal { get; protected set; } 
    public object Result { get; protected set; } 
} 

콜백 함수에서 콜백 객체를 유지하십시오. 그런 경우 netConnection.Call() 반환, 당신이 될 수 있도록 하나의 마법 문자열을 많이 가진 것으로 (사용하는 방법 (예 : 플래시 물건과 같은) 비 닷넷 일의이 종류를 볼 때 값

GetCustomersHandler callback = new GetCustomersHandler(); 
netConnection.Call("my-amf", "zend", "Ka_Services_Park", "getCompleteParkOfUser", callback, new object[] { "msg_2580671638", "20251876" }); 
callback.WaitOne(); 
object result = callback.Result; 
+0

게시 한 것과 같은 것을 시도했지만 약간의 (?) 문제가 있습니다. 개체 결과 = callback.Result; GetCustomersHandler 전에 호출하는 이유를 모르겠지만 사실 결과 null =/ –

+0

은'netConnection.Call (...) asyncronous? 그렇다면 완료 될 때까지 기다려야합니다. –

+0

좋아요, netConnection.Call 후에 간단한 절전 스레드를 만들고 작동합니다. –