Xamarin Android C# 中的进度条和线程

Posted

技术标签:

【中文标题】Xamarin Android C# 中的进度条和线程【英文标题】:Progress bar and thread in Xamarin Android C# 【发布时间】:2018-10-30 23:53:08 【问题描述】:

我尝试使用这种方法加载我的 SQL。当我点击按钮登录时,该方法正在工作,它显示了循环进度对话框,但在进度对话框完成或线程完成后,循环进度对话框仍然出现。

我希望使用 RunOnUiThread() 使 circleprogressbar 消失。我怎样才能弄清楚我的代码有什么问题?顺便说一句,我在我的片段中运行了这个,所以我需要使用 Activity 来调用 RunOnUiThread 函数。

circleprogressbar.Visibility = ViewStates.Visible;
new Thread(new ThreadStart(delegate
    

       while (progressValue < 100)
           
               progressValue += 10;
               circleprogressbar.Progress = progressValue;
                Thread.Sleep(2000);
           
  Activity.RunOnUiThread(() =>  circleprogressbar.Visibility = ViewStates.Invisible; );
            )).Start();

【问题讨论】:

【参考方案1】:

我建议创建event 来处理这种情况,如下所示:

public static class SomeClassWithEventDeclaration

    public event EventHandler<SomeClassType> Completed;


public class YourClassWithWork

    public void Work()
    
        SomeClassWithEventDeclaration.Completed += (sender, data) =>
         
           CheckTheData(data);
           HideProgressBar();
        ;
    

    public void MethodWithDataProcessing()
    
        try
        
           //Your processing
           SomeClassWithEventDeclaration.Completed.Invoke(someData);
        
        catch(Exception ex)
        
           //SomeClassWithEventDeclaration.Completed.Invoke(someErrorData);
        
    

我在没有智能感知的情况下编写了该代码,因此某些声明或方法调用可能需要进行一些检查。这个解决方案不是很好,但如果你现在需要它 - 那会有所帮助。 另外,我建议您阅读有关Xamarin Forms - Messaging Center 的信息。 在您的情况下使用此工具会更好。

【讨论】:

好的:)。谢谢我尝试使用该事件处理程序来计算它:) @JaysonEGarcia 如果这是您的解决方案,请将此标记为答案 哦,我忘了对不起。再次感谢你:)

以上是关于Xamarin Android C# 中的进度条和线程的主要内容,如果未能解决你的问题,请参考以下文章

Android:为 Android Market 等 Endless List 实现进度条和“正在加载...”

Android App开发音量调节中实现拖动条和滑动条和音频管理器AudioManager讲解及实战(超详细 附源码和演示视频)

C# 自定义控件(圆形进度条) Xamarin Forms

以编程方式将视图添加到 Xamarin.Android C# 中的 GridLayout

将文件下载进度从 PCL 更新到 Xamarin.Android

Xamarin Android C# SQLite 参数查询