Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/324.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
C# 按下按钮时Xamarin socket.io连接_C#_Xamarin_Socket.io - Fatal编程技术网

C# 按下按钮时Xamarin socket.io连接

C# 按下按钮时Xamarin socket.io连接,c#,xamarin,socket.io,C#,Xamarin,Socket.io,我昨天开始使用xamarin,所以我对C#和它的工作原理都很陌生。已经在其他项目中使用Socket.io一段时间了。 我现在要做的是连接到服务器,用户在文本编辑中输入。获取该URL并单击连接,它可以很好地连接。问题是,它只是不断地连接和创建越来越多的套接字,所有这些套接字都同时连接到服务器。如果我添加manualresetevent.waitOne(5000);它将只创建一个套接字。但这有点不方便。 这只会继续创建套接字,而不会停止。PS:只有当我把连接放在OnCreate中时,按钮点击才会发生

我昨天开始使用xamarin,所以我对C#和它的工作原理都很陌生。已经在其他项目中使用Socket.io一段时间了。 我现在要做的是连接到服务器,用户在文本编辑中输入。获取该URL并单击连接,它可以很好地连接。问题是,它只是不断地连接和创建越来越多的套接字,所有这些套接字都同时连接到服务器。如果我添加manualresetevent.waitOne(5000);它将只创建一个套接字。但这有点不方便。 这只会继续创建套接字,而不会停止。PS:只有当我把连接放在OnCreate中时,按钮点击才会发生

public class MainActivity : Activity
{
    private ManualResetEvent ManualResetEvent = null;
    private Socket socket = null;
    protected override void OnCreate (Bundle bundle)
    {
        base.OnCreate (bundle);
        var count = 0;

        // Set our view from the "main" layout resource
        SetContentView (Resource.Layout.Main);
        ManualResetEvent = new ManualResetEvent(false);
        Button testConnection = FindViewById<Button>(Resource.Id.test);
        EditText serverURL = FindViewById<EditText>(Resource.Id.serverURL);
        TextView view = FindViewById<TextView>(Resource.Id.debug);
        testConnection.Click += delegate
        {
            count++;
            socket = IO.Socket(serverURL.Text);
            view.Text = count.ToString();
            socket.On("connect", () =>
            {

            });
            socket.On(Socket.EVENT_CONNECT_ERROR, () =>
            {

            });  
        };
    }
}
公共类main活动:活动
{
专用手动复位事件手动复位事件=空;
私有套接字=空;
创建时受保护的覆盖无效(捆绑包)
{
base.OnCreate(bundle);
var计数=0;
//从“主”布局资源设置视图
SetContentView(Resource.Layout.Main);
ManualResetEvent=新的ManualResetEvent(错误);
按钮testConnection=findviewbyd(Resource.Id.test);
EditText serverURL=findviewbyd(Resource.Id.serverURL);
TextView=findviewbyd(Resource.Id.debug);
testConnection.Click+=委托
{
计数++;
socket=IO.socket(serverURL.Text);
view.Text=count.ToString();
socket.On(“连接”,()=>
{
});
socket.On(socket.EVENT\u CONNECT\u错误,()=>
{
});  
};
}
}
我的另一个版本只创建了两个套接字。区别在于socket.Connect()

公共类main活动:活动
{
专用手动复位事件手动复位事件=空;
私有套接字=空;
创建时受保护的覆盖无效(捆绑包)
{
base.OnCreate(bundle);
var计数=0;
//从“主”布局资源设置视图
SetContentView(Resource.Layout.Main);
ManualResetEvent=新的ManualResetEvent(错误);
按钮testConnection=findviewbyd(Resource.Id.test);
EditText serverURL=findviewbyd(Resource.Id.serverURL);
TextView=findviewbyd(Resource.Id.debug);
testConnection.Click+=委托
{
计数++;
socket=IO.socket(serverURL.Text);
socket.Connect();
view.Text=count.ToString();
socket.On(“连接”,()=>
{
});
socket.On(socket.EVENT\u CONNECT\u错误,()=>
{
});  
};
}
}

我正在使用这个组件

就是这样。单击计数器仅递增一次。toast不起作用,但toast的代码在调试器中运行多次。此外,如果我在之后运行socket.Connect(),它将停止上一次IO.socket()并最后一次连接。所以如果我运行socket=IO.socket();它只会连接两次socket.connect()不知道您不了解的内容,所以这次我会尝试以不同的方式表达自己:)目前我的连接代码是,它无限期地运行socket=IO.socket(位置),但如果我添加,我会得到一个IO.socket连接和一个socket.connect()连接,就是这样。所以我最后只有两个插座。socket=IO.socket(location)socket.connect()是的,我想代码缺少部分,就是这样。单击计数器仅递增一次。toast不起作用,但toast的代码在调试器中运行多次。此外,如果我在之后运行socket.Connect(),它将停止上一次IO.socket()并最后一次连接。所以如果我运行socket=IO.socket();它只会连接两次socket.connect()不知道您不了解的内容,所以这次我会尝试以不同的方式表达自己:)目前我的连接代码是,它无限期地运行socket=IO.socket(位置),但如果我添加,我会得到一个IO.socket连接和一个socket.connect()连接,就是这样。所以我最后只有两个插座。socket=IO.socket(location)socket.connect()是的,我想代码缺少部分。
public class MainActivity : Activity
{
    private ManualResetEvent ManualResetEvent = null;
    private Socket socket = null;
    protected override void OnCreate (Bundle bundle)
    {
        base.OnCreate (bundle);
        var count = 0;

        // Set our view from the "main" layout resource
        SetContentView (Resource.Layout.Main);
        ManualResetEvent = new ManualResetEvent(false);
        Button testConnection = FindViewById<Button>(Resource.Id.test);
        EditText serverURL = FindViewById<EditText>(Resource.Id.serverURL);
        TextView view = FindViewById<TextView>(Resource.Id.debug);
        testConnection.Click += delegate
        {
            count++;
            socket = IO.Socket(serverURL.Text);
            socket.Connect();
            view.Text = count.ToString();
            socket.On("connect", () =>
            {

            });
            socket.On(Socket.EVENT_CONNECT_ERROR, () =>
            {

            });  
        };
    }
}