1

(Begin)InvokeOnMainThread 呼び出しが再帰的に呼び出される状況に対処するための推奨される方法を知りたいです。

シナリオは次のとおりです...ダウンロードを開始するUIボタンを押すと、ダウンロードがオーディオ再生を開始し、オーディオ再生がUIを変更します。

コードは次のようになります。

void ButtonPressHandler(object sender, EventArgs args)
{
    BeginInvokeOnMainThread(()=> {
    StartDownload(CompletionHandler);
 });
}

void CompletionHandler()
{
 BeginInvokeOnMainThread(()=> {
    StartPlayback(PlaybackFinished);
 });
}


void PlaybackFinished()
{
 BeginInvokeOnMainThread(()=> {
    UpdateUI();
 });
}

この状況に対処するための推奨される方法は何ですか? UI が更新されません。BeginInvokeOnMainThread と InvokeOnMainThread を試しました。デッドロック状態になる可能性はありますか?

どんな助けでも大歓迎です。

4

3 に答える 3

0

私はそれを機能させることができました。ダウンロード完了で、テーブルビューのrow.GetActiveCellを使用してUIを更新しました。SetNeedsDisplay を実行しても UI を変更しなかった GetCell と比較して、それは機能しているようです。何が違うのかわからない。

于 2012-09-28T13:37:59.440 に答える