我昨天开始使用xamarin,所以我对C#和它的工作方式都很陌生。在其他项目中使用Socket.io已经有一段时间了。 我现在要做的是连接用户在TextEdit中输入的服务器。获取该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, () =>
{
});
};
}
}
我的另一个版本只创建了两个套接字。区别在于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, () =>
{
});
};
}
}
我正在使用此组件https://components.xamarin.com/view/socketioclientdotnet