方法中的DisplayAlert引发HandleTargetEvent:UnhandledException

时间:2017-06-28 05:54:07

标签: c# socket.io xamarin.forms unhandled-exception

我试图从C#SocketIO库中的方法内部调用DisplayAlert。无论我如何从方法内部调用DisplayAlert,它总是会导致InspectorDebugSession(somenum):HandleTargetEvent:UnhandledException'。即使使用辅助方法在技术上尝试在方法之外进行,它仍然无法工作。如果我将socket.On()移动到构造函数外部并移动到仍然会触发的另一个方法中,它仍然无法工作。

public PhoneNumberPage ()
    {
        InitializeComponent ();
        App.socket.On("code_status", async (data) =>
        {
            await DisplayAlert("hi", "hi", "hi");
            if (true)
            {
                await this.DisplayAlert("hi", "hi", "hi");
                displayAlert("hi", "hi", "hi");
            }
            if ((string)data == "timeout")
            {
                Console.WriteLine("!TIMEOUT!");
            }
            else if (!(bool)data)
            {
                displayAlert("Wrong Code", "The code you entered was incorrect!", "Ok");
            }
            else if ((bool)data)
            {
                // save
            }
        });
    }
private async void displayAlert(string title, string info, string accept, string cancel)
    {
        await DisplayAlert(title, info, accept, cancel);
    }

1 个答案:

答案 0 :(得分:1)

App.socket.On lambda回调可能不在UI线程上。

尝试:

Device.BeginInvokeOnMainThread(async () => await DisplayAlert("hi", "hi", "hi"));