Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#Xamarin计时器类未更新视图_C#_Xamarin_Xamarin.forms - Fatal编程技术网

C#Xamarin计时器类未更新视图

C#Xamarin计时器类未更新视图,c#,xamarin,xamarin.forms,C#,Xamarin,Xamarin.forms,使用系统; 使用System.Collections.Generic; 使用System.Linq; 使用系统文本; 使用System.Threading.Tasks; 使用系统计时器; 使用Xamarin.Forms; 名称空间时间测试 { 公共部分类主页:ContentPage { 标签; int i=0; 专用静态系统定时器定时器定时器; 公共主页() { 初始化组件(); 标签=新标签 { Text=”“+i, 垂直选项=布局选项。中心, 水平选项=布局选项。居中 }; 这个。内容=标签

使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用System.Threading.Tasks;
使用系统计时器;
使用Xamarin.Forms;
名称空间时间测试
{
公共部分类主页:ContentPage
{
标签;
int i=0;
专用静态系统定时器定时器定时器;
公共主页()
{
初始化组件();
标签=新标签
{
Text=”“+i,
垂直选项=布局选项。中心,
水平选项=布局选项。居中
};
这个。内容=标签;
SetTimer();
//这个。内容=标签;
}
公共void SetTimer()
{
//创建一个间隔为两秒的计时器。
aTimer=新系统计时器计时器(2000);
//连接计时器的已用事件。
aTimer.appeased+=OnTimedEvent;
aTimer.AutoReset=true;
aTimer.Enabled=true;
}
私有异步void OnTimedEvent(对象源,ElapsedEventArgs e)
{
i++;
label.Text=”“+i;
//这个。内容=标签;
}
}

}
您不在UI线程上,因为计时器回调在后台线程上,在这种情况下更新UI元素时,请使用
设备。BeginInvokeOnMainThread

因此,在回调中更新
标签
实例时,请执行以下操作:

Device.BeginInvokeOnMainThread(() => label.Text = "" +i;);
如果我要更新文本并更新另一个元素,我会在label.text=“+1”之后放置一个,还是必须复制整个其他行

提供给
BeginInvokeOnMainThread
的参数是一个
操作
,因此您可以使用一个“块”在UI线程上执行所需的代码:

或:


你好,宿醉,太好了!谢谢你,我会做一些阅读,我确实有一个关于上面这行的问题。如果我要更新文本并更新另一个元素,我会在
label.text=”“+1
之后放置一个
,还是必须复制整个其他行,例如,
Device.beginInvokeMainThread(()=>button.text=“单击我”)@JerodFexlet请查看我的答案更新以获取该问题的答案。
Device.BeginInvokeOnMainThread(() =>
{
    ...;
    ...;
    ...;
});
void UIThreadAction()
{
    ...;
    ...;
    ...;
}
Device.BeginInvokeOnMainThread(UIThreadAction);