1
我有一個函數需要輪詢某個服務器以獲取我發送的作業的狀態。它的形式是:確保在執行所有異步方法之前主線程不會死亡
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);
}
}
現在,不幸的是,如果主線程調用PollJobOutcomeAsync
方法終止方法完成執行前,我不會得到理想的狀態更新。如何確保這些功能在主線程死亡之前完成執行。
請問你的主線程終止? Winform或控制檯應用程序? –
@SriramSakthivel控制檯應用程序。但它有所作爲嗎? – Likhit
只是我需要知道你的主線程終止如此問題,爲什麼你不能讓主線程等待AsyncJob完成? –