我试图从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);
}
答案 0 :(得分:1)
App.socket.On
lambda回调可能不在UI线程上。
尝试:
Device.BeginInvokeOnMainThread(async () => await DisplayAlert("hi", "hi", "hi"));