*更新***
我的第一个描述(现已删除)不是真实情况。这是问题的简化版本。
完整情况:
我想用从 iphone 照片库中选择的图片更改 UIImageView 中的 UIImage。为此,我使用了 MediaPicker(Xamarin 库的一部分)。
当我单击一个按钮时,将创建 Mediapicker。然后我调用一个函数从照片库中拍照。此方法需要 2 个参数。Mediapicker 和一个回调函数。--> PictureFromGallery(mediaPicker, CallbackPhotoMade); 该回调函数会在用户选择图片库中的图片上传后触发。
在这个回调函数中,我想更改 UIImageView 的 UIImage。
void CallbackPhotoMade(MediaFile obj)
{
imageviewPhoto1.Image = UIImage.FromFile("Images/image2.PNG");
//To test I just use a file from a folder in my project
}
当我对上述函数(CallbackPhotoMade)进行断点并将鼠标放在文本“.Image =”上时,会出现以下消息: MonoTouch.UIKit.UIKitThreadAccessException:UIKit 一致性错误:您正在调用只能从以下位置调用的 UIKit 方法UI线程
我认为这就是为什么 UIImageView 中的 UIImage 不会改变的问题。
有谁知道如何解决这个问题?
*UPDATE2*** 我在另一个主题中读到,这可以通过将 CheckForIllegalCrossThreadCalls 设置为 false 来解决,例如:
public override bool FinishedLaunching(UIApplication app, NSDictionary options)
{
UIApplication.CheckForIllegalCrossThreadCalls = false;
}
不幸的是,图像仍然没有改变。虽然,具体的错误消失了。