iOS HttpClient崩溃

时间:2019-04-02 05:38:23

标签: xamarin xamarin.ios

这是我的代码

         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并始终存在相同的问题。

1 个答案:

答案 0 :(得分:1)

看起来您需要在UI线程上进行此调用(来自错误内容)。

您是否尝试确保此代码在UI线程上运行?有关应如何执行此操作的详细信息,请参见this link

本质上,您应该执行以下操作:

InvokeOnMainThread ( () => {
    // code which needs to be run on UI thread
});