Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/223.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
xamarin android应用程序在线程启动时崩溃_Android_Xamarin - Fatal编程技术网

xamarin android应用程序在线程启动时崩溃

xamarin android应用程序在线程启动时崩溃,android,xamarin,Android,Xamarin,我一运行线程就开始制作android应用程序 Thread server = new Thread(new ThreadStart(serverHandle)); server.Start(); 应用程序崩溃时没有任何错误消息,并且只在发布模式下发生,调试时一切似乎都正常 它只在serverHandle为空时有效,但如果其中有类似的内容 private void serverHandle() { AlertDialog.Builder alert =

我一运行线程就开始制作android应用程序

    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都不工作,并且在调试模式下工作正常不知道为什么