실제 메서드 호출 전후에 일부 작업을 수행하기 위해 Ninject 인터셉터를 사용하고 있지만 이러한 작업을 비동기 적으로 수행해야합니다. 다음 기사 making-ninject-interceptors-work-with-async-methods을 살펴보고 해당 비동기 부분을 구현했습니다.하지만 이제는 마지막 부분이 하나 빠져있어서 인터셉트 메소드에서 완료 할 작업을 대기/비 차단 대기로 처리하고 있습니다.Ninject 인터셉터의 인터셉트 메서드를 비동기 메서드로 만들기
나는이되고 싶어하기 때문에 나는 대기를 사용할 수 없습니다 아마, 내가 심지어이 방법에 비동기를 넣어 시도하고 난 여전히 문제가 비 차단 작업
/// <summary> /// Intercepts the specified invocation. /// </summary> /// <param name="invocation">The invocation to intercept.</param> public void Intercept(IInvocation invocation) { Task<bool> resultTask = InterceptAsync(invocation); if (resultTask.Exception != null) throw new Exception("Exception.", resultTask.Exception.InnerException); } /// <summary> /// Intercepts the specified invocation. /// </summary> /// <param name="invocation">The invocation to intercept.</param> protected async Task<bool> InterceptAsync(IMyInvocation invocation) { await BeforeInvokeAsync(invocation); if (!invocation.Cancel) { invocation.Proceed(); await AfterInvokeAsync(invocation); } return true; }
비동기 사실과이
/// <summary> /// Intercepts the specified invocation. /// </summary> /// <param name="invocation">The invocation to intercept.</param> public async void Intercept(IInvocation invocation) { Task<bool> resultTask = InterceptAsync(invocation); await resultTask; if (resultTask.Exception != null) throw new Exception("Exception.", resultTask.Exception.InnerException); }
이 있습니까 무효 방법을 완전히 비동기이 실제 할 수있는 방법을 나를 thod?
나는 Ninject에 현재의 디자인은 단지 비동기 사전 실행을 허용하지 않습니다 확신 해요. NInject 지원을 통해이 문제를 제기하는 것이 좋습니다. –
명확히하기 위해,'Proceed'는'Intercept'에서 동 기적으로 호출되어야한다는 것을 의미합니다. –
나는 당신이 말하고있는 것을 이해하는지 모르겠다. _Proceed는 Intercept_에서 동 기적으로 호출되어야한다. Intercept가 비동기 적으로 (그리고 나머지 차단) 설계되지 않았기 때문에 동 기적으로 호출되어야 함을 의미 하는가? BTW 어제 Ninject Interception GitHub 문제 섹션에서 질문을 제기 했으므로 어떻게 될지 알아볼 것입니다. – khorvat