我想知道什麼是推薦的方式來處理(開始)InvokeOnMainThread調用遞歸調用的情況。遞歸InvokeOnMainThread塊
這種情況是這樣的......我有一個用戶界面按鈕按下,啓動下載和下載啓動音頻播放,音頻播放更改用戶界面。
的代碼看起來是這樣的:
void ButtonPressHandler(object sender, EventArgs args)
{
BeginInvokeOnMainThread(()=> {
StartDownload(CompletionHandler);
});
}
void CompletionHandler()
{
BeginInvokeOnMainThread(()=> {
StartPlayback(PlaybackFinished);
});
}
void PlaybackFinished()
{
BeginInvokeOnMainThread(()=> {
UpdateUI();
});
}
什麼是處理這種情況的建議呢?我的用戶界面不會更新。我嘗試了BeginInvokeOnMainThread和InvokeOnMainThread。會有僵局嗎?
任何幫助表示讚賞。
我的更新不會在UITableViewCell中設置圖像和文本的SetNeedsDisplay。如果我在第一個InvokeOnMainThread中工作。如果我在InvokeOnMainThread內部調用它,它不會執行任何操作。如果我做一個tableview單元格更新它總是工作,不管InvokeOnMainThread。 –
爲了檢查線程,我在Update UI函數中打印了線程ID,它總是返回UI線程。但是,如果我在外部塊內調用更新UI,則更新可行,但在內部塊內不起作用。 –
基本上這裏是我的用例。我有一個按鈕,按下後將更新UI,然後創建一個Web客戶端並異步啓動下載。然後當下載完成時,它將需要再次更新ui。第一次更新的作品,但第二次更新重置文本和按鈕圖像doesnt。我曾嘗試使用Performselector或CreateScheduledTimer無濟於事。 –