这是我的代码
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Accept.Add(new
MediaTypeWithQualityHeaderValue("application/json"));
var jsonstring = await client.GetStringAsync("https://asdasdadasd" +
url);
发生此错误:
2019-03-29 11:18:43.901 Eliant.App.iOS [3859:3548233] [AppCenterCrashes]错误:+ [MSWrapperLogger MSWrapperLog:tag:level:] / 7未处理的异常: UIKit.UIKitThreadAccessException:UIKit一致性错误:您是 调用只能从UI线程调用的UIKit方法。在
中的UIKit.UIApplication.EnsureUIThread()[0x00020]Library / Frameworks / Xamarin.iOS.framework / Versions / 12.6.0.16 / src / Xamarin.iOS / UIK
it / UIApplication.cs:89,位于UIKit.UIGestureRecognizer.RemoveTarget(Foundation.NSObject目标,System.IntPtr操作)中[0x00000] /Library/Frameworks/Xamarin.iOS.framework/Versions/12.6.0.16/src/Xamarin.iOS/UIKit/UIGestureRecognizer.g.cs:342 在UIKit.UIGestureRecognizer.OnDispose()[0x00016]中 /Library/Frameworks/Xamarin.iOS.framework/Versions/12.6.0.16/src/Xamarin.iOS/UIKit/UIGestureRecognizer.cs:41 在UIKit.UIGestureRecognizer.Dispose(System.Boolean处理) [0x00000]在 /Library/Frameworks/Xamarin.iOS.framework/Versions/12.6.0.16/src/Xamarin.iOS/UIKit/UIGestureRecognizer.g.cs:959 在Foundation.NSObject.Finalize()[0x00000]中 /Library/Frameworks/Xamarin.iOS.framework/Versions/12.6.0.16/src/Xamarin.iOS/Foundation/NSObject2.cs:143
有什么想法吗?
注释等待客户端。GetStringAsync()使应用程序正常运行。我尝试在主线程上使用Device invoke运行它(即使我不认为我有任何理由需要这样做?)我尝试了.result而不是await,并且我尝试了getasync( ).content.readstringasync并始终存在相同的问题。
答案 0 :(得分:1)
看起来您需要在UI线程上进行此调用(来自错误内容)。
您是否尝试确保此代码在UI线程上运行?有关应如何执行此操作的详细信息,请参见this link。
本质上,您应该执行以下操作:
InvokeOnMainThread ( () => {
// code which needs to be run on UI thread
});