Requestcontroller 온받은 스레드 풀에서 루프를 실행
메시지는 그것들을 처리하고 FooClass의 몇 가지 메소드를 호출합니다. 어떤 메소드가 잘못되면 예외를 던져야합니다.
예에서 (어떤 방법으로 의사 코드) :
class RequestController
{
private FooClass fooClass;
public RequestController(ref FooClass fooClass)
{
this.fooClass = fooClass;
}
void OnResponseReceived()
{
try
{
this.fooClass.ProcessingRequest("id", "requestType", 13);
}
catch(Exception ex)
{
Debug.Fail(ex.Message);
}
}
}
class FooClass
{
private object myObj;
[...]
public void ProcessingRequest(string id, string type, int count)
{
try
{
myObj.MethodAsync(id, type, RequestFailedCB, myObj);
//This method throws an Exception, that I want to be handled by RequestController class based on the Exception
}
catch(Exception)
{
throw;
}
}
}
그래서, 내 문제는 비동기 방식 (FooClass에서 MethodAsync가) 실패와 FooClass에서 예외가 발생하지만, 그것은 나를주고 것입니다 "예외 처리". 내가 원하는 것은 RequestController가 FooClass의 메소드를 호출하고, FooClass.ProcessingRequest에서 호출 된 비동기 메소드가 실패하고 내 RequestController가 반응해야하는 예외를 throw하고 시스템에서 더 이상 메시지를 보내는 경우이다. 수신 된 응답에 오류가 있음을 나타냅니다.
ProcessingRequest as 및 Callback 메서드를 만드는 것이 좋습니까? 아니면이 목적을 해결할 더 좋은 방법이 있습니까 ???
편집 : @ KC-NH 복잡한 코드의 페이지를 게시하지 않고도 요점에 더 가깝게하려고 노력할 것입니다. 내가 언급 한 것을 잊어 버렸습니다. 그리고 FooClass 메소드에 게시 된 예제는 실제로 UCMA 4 API의 .BeginTransfer를 호출합니다.이 API는 실패한 경우 잡아두고, RequestController가 시스템의 실패에 대한 메시지를 더 보내도록합니다. .BeginTransfer 메서드는 IAsyncResult를 반환하고 매개 변수 중 하나로서 콜백이 필요합니다. 시스템이 throw하는 예외는이 CB 내부에 있지만 콜백에서 해당 예외를 throw하려고하면 "처리되지 않은 예외"가 발생합니다. 콜백이 예외를 throw 할 위치를 알 수 없으 리라는 것이 무엇입니까 ??
이름을 기반으로, 나는이 문제가 MethodAsync와 RequestFailedCB에 있다고 생각합니다. 코드를 게시 할 수 있습니까? –
@ KC-NH 지금 당신이 충분한 코멘트를 얻었습니다. 이 방법으로 좋은 코멘트입니다 :) – BradleyDotNET