UIKit.UIKitThreadAccessException: UIKit Consistency error: you are calling a UIKit method that can only be invoked from the UI thread

▼魔方 西西 提交于 2019-12-11 23:23:43

问题


I'm trying to run this code:

GetRepsButton.Command = new Command(async () =>
            {
                var url = @"https://url";

                HttpClient client = new HttpClient();
                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

                //crashes here
                var test = await client.GetStringAsync(url);
            });

And when I do, the entire app crashes and the output window shows this error:

ROR: +[MSWrapperLogger MSWrapperLog:tag:level:]/7 Unhandled Exception:
UIKit.UIKitThreadAccessException: UIKit Consistency error: you are calling a UIKit method that can only be invoked from the UI thread.
  at UIKit.UIApplication.EnsureUIThread () [0x00020] in /Library/Frameworks/Xamarin.iOS.framework/Versions/12.6.0.16/src/Xamarin.iOS/UIKit/UIApplication.cs:89 
  at UIKit.UIGestureRecognizer.RemoveTarget (Foundation.NSObject target, System.IntPtr action) [0x00000] in /Library/Frameworks/Xamarin.iOS.framework/Versions/12.6.0.16/src/Xamarin.iOS/UIKit/UIGestureRecognizer.g.cs:342 
  at UIKit.UIGestureRecognizer.OnDispose () [0x00016] in /Library/Frameworks/Xamarin.iOS.framework/Versions/12.6.0.16/src/Xamarin.iOS/UIKit/UIGestureRecognizer.cs:41 
  at UIKit.UIGestureRecognizer.Dispose (System.Boolean disposing) [0x00000] in /Library/Frameworks/Xamarin.iOS.framework/Versions/12.6.0.16/src/Xamarin.iOS/UIKit/UIGestureRecognizer.g.cs:959 
  at
 Foundation.NSObject.Finalize () [0x00000] in /Library/Frameworks/Xamarin.iOS.framework/Versions/12.6.0.16/src/Xamarin.iOS/Foundation/NSObject2.cs:143 
Resolved pending breakpoint at 'SelectRep.xaml.cs:110,1' to void NameSpace.<ClientPicker_SelectedIndexChanged1>d__3.MoveNext () [0x0000c].

Although I dont think I should have to since i'm not doing anything with the UI, I have tried InvokeOnMainThread which does not work. I've also tried changing to .Result instead of await, and I've tried GetAsync and reading the content, along with using WebClient instead of HttpClient. All cause this same error.

Any ideas? I'm using Xamarin forms 4 pre 7.

来源:https://stackoverflow.com/questions/55423904/uikit-uikitthreadaccessexception-uikit-consistency-error-you-are-calling-a-uik

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!