在使用 Xamarin 完成方法之前 UI 不会更新

2023-12-28

我正在开始我的移动开发冒险,并且已经遇到了一个问题。我知道在 WPF 中我会使用BackgroundWorker更新 UI,但它如何使用 Xamarin 与 Android 配合使用?

我找到了很多建议,但没有一个对我有用。下面的代码在执行其余代码时不会更改文本,它只是等待并立即执行所有操作,这不是我想要的。

private void Btn_Click(object sender, System.EventArgs e)
{
    RunOnUiThread(() => txt.Text = "Connecting...");

    //txt.Text = sql.testConnectionWithResult();
    if (sql.testConnection())
    {
        txt.Text = "Connected";
        load();
    }
    else
        txt.Text = "SQL Connection error";
}

这里您的操作来自按钮单击操作,因此您不需要使用 RunOnUiThread,因为您已准备好处理此操作。

如果我正确理解你的代码,它应该是这样的:

 private void Btn_Click(object sender, System.EventArgs e)
{
    txt.Text = "Connecting...";

    //do your sql call in a new task
    Task.Run(() => { 
        if (sql.testConnection())
        {
            //text is part of the UI, so you need to run this code in the UI thread
            RunOnUiThread((() => txt.Text = "Connected"; );

            load();
        }   
        else{
            //text is part of the UI, so you need to run this code in the UI thread
            RunOnUiThread((() => txt.Text = "SQL Connection error"; );
        }
    }); 

}

Task.Run 中的代码将被异步调用,而不会阻塞 ui。 如果您需要在更新 UI 元素之前等待特定工作,您可以在 Task.Run 中使用 wait 字。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在使用 Xamarin 完成方法之前 UI 不会更新 的相关文章

  • 在 C 中初始化变量

    我知道有时如果你不初始化int 如果打印整数 您将得到一个随机数 但将所有内容初始化为零似乎有点愚蠢 我问这个问题是因为我正在评论我的 C 项目 而且我对缩进非常直接 并且它可以完全编译 90 90 谢谢 Stackoverflow 但我想
  • Android:无法使用 DbHelper 和 Contract 类将数据插入 SQLite

    public class Main2Activity extends AppCompatActivity private EditText editText1 editText2 editText3 editText4 private Bu
  • Python GTK+ 画布

    我目前正在通过 PyGobject 学习 GTK 需要画布之类的东西 我已经搜索了文档 发现两个小部件似乎可以完成这项工作 GtkDrawingArea 和 GtkLayout 我需要一些基本函数 如 fillrect 或 drawline
  • 我可以使用 moq Mock 来模拟类而不是接口吗?

    正在经历https github com Moq moq4 wiki Quickstart https github com Moq moq4 wiki Quickstart 我看到它 Mock 一个接口 我的遗留代码中有一个没有接口的类
  • 如何检测表单的任何控件的变化?

    如何检测 C 中表单的任何控件的更改 由于我在一个表单上有许多控件 并且如果表单中的任何控件值发生更改 我需要禁用按钮 我正在寻找一些内置函数 事件处理程序 属性 并且不想为此创建自定义函数 不 我不知道任何时候都会触发任何事件any控制表
  • Android 如何将总天数准确更改为年、月、日?

    我正在做一个应用程序 该应用程序与根据给定的生日日期输入获取一个人的年龄有关 为此 我从下面的代码中获取从该日期到当前日期的总天数 String strThatDay 1991 05 10 SimpleDateFormat formatte
  • 为什么 std::strstream 被弃用?

    我最近发现std strstream已被弃用 取而代之的是std stringstream 我已经有一段时间没有使用它了 但它做了我当时需要做的事情 所以很惊讶听到它的弃用 我的问题是为什么做出这个决定 有什么好处std stringstr
  • AES 128 CBC 蒙特卡罗测试

    我正在 AES 128 CBC 上执行 MCT 如中所述http csrc nist gov groups STM cavp documents aes AESAVS pdf http csrc nist gov groups STM ca
  • 使用管道时,如果子进程数量大于处理器数量,进程是否会被阻塞?

    当子进程数量很大时 我的程序停止运行 我不知道问题是什么 但我猜子进程在运行时以某种方式被阻止 下面是该程序的主要工作流程 void function int process num int i initial variables for
  • 通过电子邮件发送文本文件附件

    我正在尝试附加一个文本文件以便通过电子邮件发送 但每当我打开电子邮件应用程序时 它都会说该文件不存在 请帮助 Intent i new Intent Intent ACTION SEND i setType text plain i put
  • 动态添加 ASP.Net 控件

    我有一个存储过程 它根据数据库中存储的记录数返回多行 现在我想有一种方法来创建 div 带有包含该行值的控件的标记 如果从数据库返回 10 行 则 10 div 必须创建标签 我有下面的代码来从数据库中获取结果 但我不知道如何从这里继续 S
  • CamcorderProfile.videoCodec 返回错误值

    根据docs https developer android com reference android media CamcorderProfile html 您可以使用CamcorderProfile获取设备默认视频编解码格式 然后将其
  • Android:如何从网络异步获取搜索建议?

    我创建了一个可搜索的活动 现在 我想添加从网络服务获取的搜索建议 我想异步获取这些建议 根据添加自定义建议 http developer android com guide topics search adding custom sugge
  • 调用堆栈中的“外部代码”是什么意思?

    我在 Visual Studio 中调用一个方法 并尝试通过检查调用堆栈来调试它 其中一些行标记为 外部代码 这到底是什么意思 方法来自 dll已被处决 外部代码 意味着该dll没有可用的调试信息 你能做的就是在Call Stack窗口中单
  • 如果没有抽象成员,基类是否应该标记为抽象?

    如果一个类没有抽象成员 可以将其标记为抽象吗 即使没有实际理由直接实例化它 除了单元测试 是的 将不应该实例化的基类显式标记为抽象是合理且有益的 即使在没有抽象方法的情况下也是如此 它强制执行通用准则来使非叶类抽象 它阻止其他程序员创建该类
  • 我的应用程序中的后退按钮出现问题[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我想在手机关闭时清除共享首选项值 你
  • Dagger 2 中“HasFragmentInjector”的实际用法是什么

    我之前已经实现了 dagger2 v2 2 但现在他们也添加了 dagger android 部分 所以我正在用它创建示例项目 我知道旧的方法论 Provide and Modules and 成分等注释 但从 Dagger 2 8 开始
  • 无法接收 UDP Windows RT

    我正在为 Windows 8 RT 编写一个 Windows Store Metro Modern RT 应用程序 需要在端口 49030 上接收 UDP 数据包 但我似乎无法接收任何数据包 我已按照使用教程进行操作DatagramSock
  • WebSocket安全连接自签名证书

    目标是一个与用户电脑上安装的 C 应用程序交换信息的 Web 应用程序 客户端应用程序是 websocket 服务器 浏览器是 websocket 客户端 最后 用户浏览器中的 websocket 客户端通过 Angular 持久创建 并且
  • 发布的 Android apk 出现错误“包文件未正确签名”

    我最近将我的应用程序上传到 Android 市场 但是由于错误 下载时它拒绝运行 包文件未正确签名 我首先使用 eclipse 发布了数据包 右键单击导出 创建密钥库然后发布 但它拒绝工作 然后我下载了 keytool 和 jarsigne

随机推荐

  • 从 Play 应用程序访问 SSL 安全网页

    我正在从 Play 应用程序访问 SSL 安全页面 当页面的证书不可信时 因为它已过期或自签名或 无论是什么其他原因 我想从我的通话中提取此信息并且 相应地采取一些行动 当我在浏览器中访问这样的页面时 它会警告我该页面有问题 证书 当我在游
  • 从 Angular 6 + Angular Material 中的日期计算年龄

    我试图根据使用 Angular Material 日期选择器选取的日期计算年龄 但出现错误 下面是我的代码 HTML div class input container div
  • 如何访问/ping 位于AWS 上的服务器?

    应使用什么地址访问位于 AWS 上的服务器 我创建了一个 AWS 实例并在其上安装了一个 Web 服务器 但是 无法通过以下任何方式访问服务器 ec2 174 129 24 92 compute 1 amazonaws com 来自实例的I
  • R:如何使用 data.table 的函数输入创建一个函数

    我在使用 data table 进行练习时遇到了问题 这是我的问题 我写了一个简单的减法函数 minus lt function a b return a b 我的数据集是一个简单的 data table dt lt as data tab
  • Android View Activity 之间的动画转换

    当活动之间发生转换时 如何保持动画活动 假设我有两个活动 A 和 B 活动 B 在活动 A 上有一个 滑入 过渡 我想在活动 B 发生过渡时保持按钮在活动 A 中旋转 当活动 B 开始在活动 A 上滑动时 我的按钮停止旋转动画 我猜这是因为
  • 无法加载文件或程序集 Microsoft.VisualStudio.Web.AzureAD.Contracts

    Was trying to follow the tutorial of MVC in ASP NET site Creating an Entity Framework Data Model for an ASP NET MVC Appl
  • 通过docker中的nginx和gunicorn服务flask

    玩弄 Flask 我想在 docker 中进行真正的设置并运行 这意味着 Flask 应通过 nginx 和 Gunicorn 提供服务 我设置了一个示例代码存储库https github com geoHeil pythonServing
  • 在构造函数外部的方法中使用构造函数中的变量

    如果我有一个像这样的构造函数 public Constructor int a int b int c a int d b 然后 我如何在与构造函数相同的类中的方法中使用变量 c 和 d 因为尝试仅使用方法中的变量名称似乎不起作用 事实上你
  • 使用 TcpClient 通过网络发送和接收数据

    我需要开发一个连接到 TCP 服务器的服务 主要任务是读取传入消息并在十分钟内向服务器发送命令 例如同步命令 例如 我使用了 TcpClient 对象 如下所示 TcpClient tcpClient new TcpClient tcpCl
  • 在AddValidation方法中访问模型数据asp.net core自定义验证

    我正在遵循这个例子 https learn microsoft com en us aspnet core mvc models validation https learn microsoft com en us aspnet core
  • 你知道 JavaScript 中哪些因素会导致内存泄漏吗?

    你知道 JavaScript 中哪些因素会导致内存泄漏吗 我感兴趣的浏览器 IE 7 FireFox 3 Safari 3 有一篇很好的文章是关于JavaScript 和内存泄漏 http www javascriptkit com jav
  • 从 iPhone 上的音频流获取 Hz 频率

    在 iOS 上从音频流 音乐 获取 Hz 频率值的最佳方法是什么 Apple 提供的最好 最简单的框架是什么 提前致谢 下面是我在 iOS 中使用 Accelerate Framework 执行 FFT 的一些代码 这使得速度相当快 kee
  • 为什么禁用的 NSButton(或 NSButtonCell)的文本是灰色的?

    当我将按钮 NSButton 设置为禁用时 其文本颜色变为灰色 我该如何修改这个属性 我希望文字保持黑色 如果不是问题的正文 则回答您的标题 这实际上是一种以这种方式表示禁用的屏幕元素的行业标准 并且可能是用户所期望的 做一些不同的事情可能
  • 从 .NET 调用 Java API - 最佳方法

    我需要从现有的 NET 代码库调用全部用 java 编写的 API 这里最好的方法是什么 用 java 编写一个 web 服务 基本上只是将调用转发到 API 或者使用类似的东西JNI4NET http jni4net sourceforg
  • 使用终端从 Mac OS X 钥匙串中删除私钥

    我已使用 安全 终端应用程序和命令将 iOS 开发的开发人员身份 证书 私钥 导入到钥匙串中 security import identity p12 k
  • 泛型树,自界泛型

    我要为我的一个项目添加通用性 我喜欢泛型 因为这使我的代码更加健壮 自我记录 并消除了所有那些丑陋的强制转换 然而 我遇到了一个棘手的情况 并且在尝试表达我的一个结构的 递归 约束时遇到了一些问题 这基本上是某种 通用 树 具有双重链接 到
  • 使用 javascript 检索文本字段值

    我想使用 javascript 检索文本字段值 假设我有这样的代码
  • 将图像保存在Android图库中

    我正在使用此代码来保存图像 URL url null try url new URL image catch MalformedURLException e1 e1 printStackTrace Bitmap bmp null try b
  • Thin + Nginx + Websockets 配置 |导轨

    我有一个带有 websocket rails gem 的 Ruby on Rails 3 2 应用程序 在 nginx 反向代理后面的瘦网络服务器中运行 除了 nginx 反向代理外 一切正常 通过删除 nginx 反向代理 websock
  • 在使用 Xamarin 完成方法之前 UI 不会更新

    我正在开始我的移动开发冒险 并且已经遇到了一个问题 我知道在 WPF 中我会使用BackgroundWorker更新 UI 但它如何使用 Xamarin 与 Android 配合使用 我找到了很多建议 但没有一个对我有用 下面的代码在执行其