1
내가 보낸 작업의 상태를 얻기 위해 특정 서버를 폴링해야하는 기능이 있습니다. 그것은 형식이다 : 메소드가 실행을 완료되기 전에 PollJobOutcomeAsync
메소드를 호출 메인 스레드를 종료 할 경우모든 비동기 메서드를 실행하기 전에 주 스레드가 죽지 않는지 확인
public Foo PollForJobOutcomeAsync(int pollSpan, Action<Foo> callback)
{
var caller = new AsyncMethodCaller((p, cb) =>
{
PollForJobOutcome(p);
cb(this);
});
caller.BeginInvoke(pollSpan, callback, null, null);
return this;
}
public void PollForJobOutcome(int pollSpan)
{
while (job not completed)
{
DoSomething();//send request to server, change job status according to response
Thread.Sleep(pollSpan);
}
}
지금 불행하게도 내가 원하는 상태 업데이트를받지 않습니다. 주 스레드가 죽기 전에이 함수가 실행을 완료하도록하려면 어떻게해야합니까?
하는 데 도움이
희망 메인 스레드 호출에서 어떻게 든 후 리턴 값에 의해 주 스레드에이를 전달하거나
IAsyncResult
를 반환합니다? Winform 또는 콘솔 응용 프로그램? –@SriramSakthivel Console 앱. 하지만 그것이 효과가 있습니까? – Likhit
그냥 주 스레드가 종료되는 이유를 묻는 이유가 묻습니다. 왜 주 스레드를 만들어서 AsyncJob이 끝날 때까지 기다릴 수 없습니까? –