Multithreading Xamarin.Forms';主线程是单线程吗?
我正在使用XF pcl制作一个应用程序 我很好奇它的主线程在两个Multithreading Xamarin.Forms';主线程是单线程吗?,multithreading,xamarin,xamarin.forms,Multithreading,Xamarin,Xamarin.forms,我正在使用XF pcl制作一个应用程序 我很好奇它的主线程在两个iOS/Android平台上都是一个线程。因为我很少在XF/Android上遇到这个错误 当我尝试访问myarray[I]时,我很少在XF/Android上遇到这种情况 [NullReferenceException:对象引用未设置为 反对。] 我相信Clean()和Update()都是从主线程调用的,所以它不会发生,还是我错了 代码 IList<MyData> myarray = new List<MyData&
iOS/Android
平台上都是一个线程。因为我很少在XF/Android
上遇到这个错误
当我尝试访问myarray[I]时,我很少在XF/Android
上遇到这种情况
[NullReferenceException:对象引用未设置为
反对。]
我相信Clean()和Update()都是从主线程调用的,所以它不会发生,还是我错了
代码
IList<MyData> myarray = new List<MyData>();
void Clean() //when ContentPage is popped.
{
....
StopMyTimer();
myarray.Clear();
myarray = null;
}
void Update() //every 50ms by Device.StartTimer
{
....
if(myarray != null)
{
for(int i = myarray.Count - 1 ; i >= 0 ; i--)
{
MyData = myarray[i];
if(/*needdelete*/)
myarray.remove(MyData);
}
}
....
}
IList myarray=new List();
void Clean()//当弹出ContentPage时。
{
....
StopMyTimer();
myarray.Clear();
myarray=null;
}
void Update()//每50毫秒由Device.StartTimer更新一次
{
....
if(myarray!=null)
{
对于(int i=myarray.Count-1;i>=0;i--)
{
MyData=myarray[i];
如果(/*需要删除*/)
myarray.remove(MyData);
}
}
....
}
尝试InvokeOnMainThread(()=>{//操纵UI控件});-迈克·达维什刚才edit@MikeDarwish嗨,正如我写的,我确信它是从主线程调用的。那就不需要了,不是吗?如果你确定了,你就不需要了it@MikeDarwish对这就是为什么我写了一个问题…你在IOS上也面临同样的问题吗?!