함수 A가보다 긴 비동기 메서드 B (웹 서비스 호출 포함)를 시작해야한다는 요구 사항이 있습니다.비동기 작업 .Net 4.5
함수 B가 아직 반환되지 않은 경우에도 함수 A는 반환해야합니다.
기능 B는 데이터를 반환하지 않으며, 최상의 코드는 무엇을 할 것, 기능 A가 닷넷 4.5 C#을 사용
를 반환했습니다 부르고 경우에도 실행해야하고, 당신은 어떤 스레딩 문제를을 forsee 수 있습니까?
.net에는 많은 예제가 있지만 목적을 위해 코드를 찾는 것은 그렇게 간단하지 않습니다.
public void A()
{
// Do something...
Task.Run(B);
// or, if you need to pass arguments to B:
// Task.Run(() => B(x, y, z));
// Do something else...
}
public void B()
{
// Do something...
}
것은 예외가 B에서 던져 질 수 있도록하기 위해, 또는 프로세스를 충돌합니다 않도록주의 :
로그 할 수 있다는 이점은 큰 보너스입니다 ! –
Reed, 임 귀하의 확장 방법을 사용하지만 그것은 단지 기다리고있는 작업에 매달려 있습니다. 의도 한대로 사용하고 있습니까? var t = 새 작업 (() => DoStuff() t.FireAndForget(); –
t.FireAndForget()이 실행되기 전에 t.Start()에 호출을 추가하면 .. –