我可以通过单击按钮将图片加载到UImageView,但不能从计时器加载。为什么会这样呢?我怎么才能修复它呢?
下面是我的代码:
void _timer_Elapsed(object sender, ElapsedEventArgs e)
{
Patter_Function();
switch_Function();
}
void switch_Function()
{
image1 = new UIImage();
image1 = UIImage.FromBundle("heart");
image2 = new UIImage();
image2 = UIImage.FromFile( @"White_Sharingan.png");
image3 = new UIImage();
image3 = UIImage.FromFile("snow.png");
image4 = new UIImage();
//image4.//FromFile("Images/waterfront.jpg");
switch (Patter_1[switch_Counter].Move0) {
case 0 :
Box_1.Image = image1;
break;
case 1 :
Box_1.Image = image1;
break;
case 2 :
Box_2.Image = image1;
break;
case 3:
Box_3.Image = image1;
break;
case 4:
Box_4.Image = image1;
break;
case 5:
Box_5.Image = image1;
break;
case 6:
Box_6.Image = image1;
break;
case 7:
Box_7.Image = image1;
break;
case 8:
Box12.Image = image1;
break;
case 9:
Box_9.Image = image1;
break;
case 10:
Box_10.Image = image1;
break;
case 11:
Box_11.Image = image1;
break;
case 12:
Box8.Image = image1;
break;
case 13:
Box_13.Image = image1;
break;
case 14:
Box_14.Image = image1;
break;
case 15:
Box_15.Image = image1;
break;
case 16:
Box_16.Image = image1;
break;
case 17:
Box_17.Image = image1;
break;
case 18:
Box_18.Image = image1;
break;
case 19:
Box_19.Image = image1;
break;
case 20:
Box_20.Image = image1;
break;}
switch (Patter_1[switch_Counter].Move1)
{
case 0:
Box_1.Image = image2;
break;
case 1:
Box_2.Image = image2;
break;
case 2:
Box_2.Image = image2;
break;
case 3:
Box_3.Image = image2;
break;
case 4:
Box_4.Image = image2;
break;
case 5:
Box_5.Image = image2;
break;
case 6:
Box_6.Image = image2;
break;
case 7:
Box_7.Image = image2;
break;
case 8:
Box12.Image = image2;
break;
case 9:
Box_9.Image = image2;
break;
case 10:
Box_10.Image = image2;
break;
case 11:
Box_11.Image = image2;
break;
case 12:
Box8.Image = image2;
break;
case 13:
Box_13.Image = image2;
break;
case 14:
Box_14.Image = image2;
break;
case 15:
Box_15.Image = image2;
break;
case 16:
Box_16.Image = image2;
break;
case 17:
Box_17.Image = image2;
break;
case 18:
Box_18.Image = image2;
break;
case 19:
Box_19.Image = image2;
break;
case 20:
Box_20.Image = image2;
break;
}
switch (Patter_1[switch_Counter].Move2)
{
case 0:
Box_1.Image = image3;
break;
case 1:
Box_2.Image = image3;
break;
case 2:
Box_2.Image = image3;
break;
case 3:
Box_3.Image = image3;
break;
case 4:
Box_4.Image = image3;
break;
case 5:
Box_5.Image = image3;
break;
case 6:
Box_6.Image = image3;
break;
case 7:
Box_7.Image = image3;
break;
case 8:
Box12.Image = image3;
break;
case 9:
Box_9.Image = image3;
break;
case 10:
Box_10.Image = image3;
break;
case 11:
Box_11.Image = image3;
break;
case 12:
Box8.Image = image3;
break;
case 13:
Box_13.Image = image3;
break;
case 14:
Box_14.Image = image3;
break;
case 15:
Box_15.Image = image3;
break;
case 16:
Box_16.Image = image3;
break;
case 17:
Box_17.Image = image3;
break;
case 18:
Box_18.Image = image3;
break;
case 19:
Box_19.Image = image3;
break;
case 20:
Box_20.Image = image3;
break;
}
switch (Patter_1[switch_Counter].Move3)
{
case 0:
Box_1.Image = image4;
break;
case 1:
Box_2.Image = image4;
break;
case 2:
Box_2.Image = image4;
break;
case 3:
Box_3.Image = image4;
break;
case 4:
Box_4.Image = image4;
break;
case 5:
Box_5.Image = image4;
break;
case 6:
Box_6.Image = image4;
break;
case 7:
Box_7.Image = image4;
break;
case 8:
Box12.Image = image4;
break;
case 9:
Box_9.Image = image4;
break;
case 10:
Box_10.Image = image4;
break;
case 11:
Box_11.Image = image4;
break;
case 12:
Box8.Image = image4;
break;
case 13:
Box_13.Image = image4;
break;
case 14:
Box_14.Image = image4;
break;
case 15:
Box_15.Image = image4;
break;
case 16:
Box_16.Image = image4;
break;
case 17:
Box_17.Image = image4;
break;
case 18:
Box_18.Image = image4;
break;
case 19:
Box_19.Image = image4;
break;
case 20:
Box_20.Image = image4;
break;
}
switch_Counter++;
if (switch_Counter >4 )
{
switch_Counter = 0;
}
}我使用了调试器,所以我知道代码已经到了最后一行,但是当它到达那里时,它什么也不做。调试器说: UIKit.UIKitThreadAccessException: UIKit Consistency error:你正在调用一个只能从UI线程调用的UIKit方法。
有什么原因吗?
发布于 2017-04-05 13:05:18
在修改UI视图时涉及到的任何操作,都需要在UI/主线程下进行。所以把代码放在的lambda中:
InvokeOnMainThread ( () => {
// manipulate UI controls
});https://stackoverflow.com/questions/43221197
复制相似问题