MAUI 中 UI 线程访问的序列化

问题描述 投票:0回答:1

我正在使用以下代码来更改 UI 线程之外的标签上的文本。

标签上的文字不是我所期望的。我花了一些时间才意识到发生了什么。

string mystringvar = null;
mystringvar = "WHAT I WANT";
Application.Current.Dispatcher.Dispatch(() =>
{
    mylabel.Text = mystringvar;
});
mystringvar = "WHAT I GOT";
// on the UI, the text on mylabel is WHAT I GOT

在再次使用 mystringvar 之前,是否有任何机制可以确定 UI 已更新?我没有进行过实验,但这也适用于标签的其他属性,这是有道理的。

multithreading maui ui-thread
1个回答
0
投票

您可以随时获取副本并确保副本永远不会被覆盖,例如

string mystringvar = null;
mystringvar = "WHAT I WANT";
{
    string mystringvar2 = mystringvar;
    Application.Current.Dispatcher.Dispatch(() =>
    {
        mylabel.Text = mystringvar2;
    });
}
mystringvar = "WHAT I GOT";
© www.soinside.com 2019 - 2024. All rights reserved.