xamarin android应用程序在线程启动时崩溃
我一运行线程就开始制作android应用程序xamarin android应用程序在线程启动时崩溃,android,xamarin,Android,Xamarin,我一运行线程就开始制作android应用程序 Thread server = new Thread(new ThreadStart(serverHandle)); server.Start(); 应用程序崩溃时没有任何错误消息,并且只在发布模式下发生,调试时一切似乎都正常 它只在serverHandle为空时有效,但如果其中有类似的内容 private void serverHandle() { AlertDialog.Builder alert =
Thread server = new Thread(new ThreadStart(serverHandle));
server.Start();
应用程序崩溃时没有任何错误消息,并且只在发布模式下发生,调试时一切似乎都正常
它只在serverHandle为空时有效,但如果其中有类似的内容
private void serverHandle()
{
AlertDialog.Builder alert = new AlertDialog.Builder(this);
alert.SetMessage("test");
alert.Show();
}
它停止工作任何帮助为什么会这样?
AlertDialog
只能在UI线程中使用。请参阅
因此,如果您希望代码正常工作,可以按如下方式进行修改:
Thread server = new Thread(new ThreadStart(()=> {
//run the AlertDialog in the UI Thread.
RunOnUiThread(() => {
AlertDialog.Builder alert = new AlertDialog.Builder(this);
alert.SetMessage("test");
alert.Show();
});
}));
server.Start();
AlertDialog
只能在UI线程中使用。请参阅
因此,如果您希望代码正常工作,可以按如下方式进行修改:
Thread server = new Thread(new ThreadStart(()=> {
//run the AlertDialog in the UI Thread.
RunOnUiThread(() => {
AlertDialog.Builder alert = new AlertDialog.Builder(this);
alert.SetMessage("test");
alert.Show();
});
}));
server.Start();
我用代码创建了一个空项目,创建了android软件包,并将其安装在我的android设备上,然后运行。没有挤压或错误。请确保按的步骤将应用程序侧向加载。只要我将类似于此私有void serverHandle()的任何内容放入其中,只要serverHandle为空,编码器就会运行。{AlertDialog.Builder aler=new AlertDialog.Builder(this);aler.SetMessage(“test”);aler.Show();}它只是停止工作。你能发布
serverhandle
的代码吗?还是它只是一个空函数?我编辑了这个问题,它只在函数为空时才工作。我用代码创建了一个空项目,创建了安卓软件包,并将它安装在我的安卓设备上,然后运行。没有挤压或错误。请确保按的步骤将应用程序侧向加载。只要我将类似于此私有void serverHandle()的任何内容放入其中,只要serverHandle为空,编码器就会运行。{AlertDialog.Builder aler=new AlertDialog.Builder(this);aler.SetMessage(“test”);aler.Show();}它只是停止工作。你可以发布serverhandle
的代码吗,或者它只是一个空函数吗?我编辑了这个问题,它只在函数为空时工作,里面的任何东西都是空的,它会破坏UI线程,因为如果我把这个TcpListener listener=new TcpListener(IPAddress.Any,1000);listener.Start();它压碎了againI不认为这与压碎应用程序的原因相同。请尝试修改端口号。端口1000可能很容易被其他应用程序占用。使用了所有类型的端口号,它们都不工作,在调试模式下工作正常不知道为什么需要在UI线程上运行所有东西,因为如果我把这个TcpListener listener=newtcplistener(IPAddress.Any,1000);listener.Start();它压碎了againI不认为这与压碎应用程序的原因相同。请尝试修改端口号。端口1000可能很容易被其他应用程序占用。使用了所有类型的端口号em都不工作,并且在调试模式下工作正常不知道为什么