代码之家  ›  专栏  ›  技术社区  ›  Dan Schneider

忽略ProgressBar可见性

  •  1
  • Dan Schneider  · 技术社区  · 7 年前

    我试图在启动异步任务时显示进度条,并且在异步任务完成运行后,将进度条设置回“不可见”。由于某些原因,ProgressBar没有响应更改可见性属性的代码。

            Activity.RunOnUiThread(() =>
            {
                prog.Visibility = ViewStates.Visible;
            });
    
            Task<bool> createPickTask = Task.Run(() => Utils.createPick(firstBet, myBet, game));
                    bool createPickResult = createPickTask.Result;
    
            if (createPickResult)
            {
                adapter.NotifyItemChanged(pos);
            }
            else
            {
                showErrorMessage();
            }
    
            Activity.RunOnUiThread(() =>
            {
                prog.Visibility = ViewStates.Gone;
            });
    
    1 回复  |  直到 7 年前
        1
  •  2
  •   Billy Liu - MSFT    7 年前

    由于某些原因,ProgressBar没有响应更改可见性属性的代码。

    在这部分代码全部执行之前,代码不会在ui上生效。 您可以尝试在任务中设置进度条可见性。例如:

        private void Button_Click(object sender, System.EventArgs e)
        {
            Activity.RunOnUiThread(() =>
            {
                prog.Visibility = ViewStates.Visible;
            });
    
            Task<bool> createPickTask = Task.Run(/*async*/ () => {
                //await Task.Delay(3000);
                bool createPickResult = Utils.createPick(firstBet, myBet, game);
    
                if (createPickResult)
                {
                    adapter.NotifyItemChanged(pos);
                }
                else
                {
                    showErrorMessage();
                }
    
                Activity.RunOnUiThread(() =>
                {
                    prog.Visibility = ViewStates.Gone;
                });
                return createPickResult;
            });
        }
    

    结果是:

    enter image description here