このコードのフォームは表示されません。どうすればそれを表示することができますか?コンソールを通して、すべてが機能します。Loadイベントでソケットに接続すると、フォームが表示されないのはなぜですか?
void Form1_Load(object sender, EventArgs e)
{
String host = Dns.GetHostName();//name kompa
//ip pc
IPAddress ip = Dns.GetHostByName(host).AddressList[0];
const int port = 2222;
label1.Text = host;
label2.Text = "Сервер запущен на " + ip.ToString() + ":" + port.ToString();
server.serversocket = new Socket(ip.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
server.serversocket.Bind(new IPEndPoint(ip, port));
server.serversocket.Listen(100);
//ошибочка в цикле
while (server.work)
{
MessageBox.Show("dsff");
Socket handle = server.serversocket.Accept();
richTextBox1.AppendText("новое подключение" + handle.RemoteEndPoint.ToString());
new user(handle);
}
while()ループを使用してUIスレッドをハングアップすることは、最も基本的なGUIプログラミングミスの1つです。ワーカースレッドを使用します。 –
また、OnLoadでループ/長時間実行する作業はお勧めできませんが、その段階ではまだフォームは表示されません。 OnShownはより優れています。しかし、@ HansPassantのアドバイスに従ってください。 –