在我的应用程序的主要形式的构造函数中:
public GUI()
{
InitializeComponent();
Connect();
}
这是Connect():
public void Connect()
{
string IP = "###.###.#.#"
int port = 4000;
credentials_ipep = new IPEndPoint(IPAddress.Parse(IP), port);
if (credentials_socket == null)
{
credentials_socket = new UdpClient(port);
}
Byte[] sendBytes = Encoding.ASCII.GetBytes("LOGIN");
credentials_socket.Send(sendBytes, sendBytes.Length, credentials_ipep);
string received;
try
{
received = Encoding.ASCII.GetString(credentials_socket.Receive(ref credentials_ipep));
MessageBox.Show("Yay Server Connected!");
}
catch (SocketException)
{
MessageBox.Show("Server Not Running!");
return;
}
}
该计划的主要方法是:
static void Main(string[] args)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new GUI());
}
我的应用程序停留在received = Encoding.ASCII.GetString(credentials_socket.Receive(ref credentials_ipep));
当我从构造函数中删除Connect()
,而是在按钮上单击主窗体(GUI)上调用它时,代码工作正常,我能够看到消息框告诉我服务器是否正在运行或不。
是否有某种网络初始化需要在我没有看到的构造函数完成时完成?我想在构造函数中放置Connect()
的原因是我可以从Windows任务计划程序启动应用程序,而不是手动单击Connect()
。