我想知道什么是推荐的方式来处理(开始)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无济于事。 –