【发布时间】:2018-12-16 23:36:27
【问题描述】:
所以我在 Xamarin 中有一个监视器页面,我需要每秒刷新一次值(从 TcpClient 获得的值)。
我在我的 CS 文件中设置了一个公共字符串,并在 Xaml 中进行了一些基本的绑定,如下所示:<Label Text="{Binding myString}"/>
在我后面的代码中,我运行了一个刷新myString 的异步任务。任务看起来像这样:
protected async Task syncDisplay(){
while(true){
//TcpClient going on, getting some values
myString = System.Text.Encoding.ASCII.GetString(data, 0, bytes);
}
}
然后我只是创建一个新线程来运行任务。就这样。问题是我的 UI 没有更新任何值。当我尝试为任务之外的字符串分配一个值时,它工作正常。我确定我在这里遗漏了一些重要的东西,但我真的不知道是什么。
提前致谢
【问题讨论】:
-
在ui/主线程上更新
myString -
您的 myString 设置器是否在调用 PropertyChanged()?
标签: c# multithreading xamarin binding task