xamarin - iOS HttpClient 崩溃
问题描述
这是我的代码
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] 中
库/Frameworks/Xamarin.iOS.framework/Versions/12.6.0.16/src/Xamarin.iOS/UIK
it/UIApplication.cs:89 在 /Library/Frameworks/Xamarin.iOS.framework/Versions/12.6.0.16/src/Xamarin.iOS 中的 UIKit.UIGestureRecognizer.RemoveTarget (Foundation.NSObject 目标,System.IntPtr 操作)[0x00000] /UIKit/UIGestureRecognizer.g.cs:342 在 /Library/Frameworks/Xamarin.iOS.framework/Versions/12.6.0.16/src/Xamarin.iOS/UIKit/UIGestureRecognizer.cs 中的 UIKit.UIGestureRecognizer.OnDispose () [0x00016] :41 在 /Library/Frameworks/Xamarin.iOS.framework/Versions/12.6.0.16/src/Xamarin.iOS/UIKit/UIGestureRecognizer.g.cs:959 中的 UIKit.UIGestureRecognizer.Dispose (System.Boolean disposing) [0x00000]在 /Library/Frameworks/Xamarin.iOS.framework/Versions/12.6.0.16/src/Xamarin.iOS/Foundation/NSObject2.cs:143 中的 Foundation.NSObject.Finalize () [0x00000]
有任何想法吗?
注释掉 await client.GetStringAsync() 会使应用程序正常工作。我尝试在主线程上使用 Device invoke 运行它(即使我认为没有任何理由需要这样做?)我尝试过 .result 而不是 await,我尝试过 getasync( ).content.readstringasync 并且总是有同样的问题。
解决方案
看起来您需要在 UI 线程上进行此调用(来自错误内容)。
您是否尝试过确保此代码在 UI 线程上运行?有关如何执行此操作的详细信息,请参阅此链接。
本质上,您应该执行以下操作:
InvokeOnMainThread ( () => {
// code which needs to be run on UI thread
});
推荐阅读
- python - BPF 过滤器可以在 Docker 容器中工作吗?
- python - 当任何列重复时,从 Pandas Dataframe 中删除一行
- javascript - 在 RSpec 中测试 jQuery 输入掩码
- mongodb - 用于查找两个数字之间的数字的 MongoDB 索引具有高键扫描
- linux - 拆分文本后如何获取每行的最后一个字符?
- time-series - 如何设置 ARIMA 参数 p、q、d 还是我应该选择 Auto ARIMA?
- python-3.x - 如何使用数据库删除树视图上的选定项目
- c# - 在特定 DataGridView 列下对齐总文本框 - Win Forms c#
- python - 使用 re 匹配包含换行符的文本
- xcode - MacOS Sierra 上的 Xcode 版本 11