0

私はこのコードを持っています。これは単純な WPF TcpListener アプリケーションです。以下のコードは正常に動作します。しかし、void Client() のコードを Button_Click() イベントに追加すると、機能しません!. この理由がわかりません。誰でも私に説明してもらえますか?.

このコードは正常に実行されます:

    TcpClient client;
    NetworkStream ns;
    BinaryReader bRead;
    BinaryWriter bWrite;

    private void Window_Loaded(object sender, RoutedEventArgs e)
    {
        Task t = new Task(new Action(() =>
        {
            Server();
        }));
        t.Start();
        Thread.Sleep(100);
        Client();
    }

    public void Client()
    {
        client = new TcpClient(Dns.GetHostName(), 2055);
        ns = client.GetStream();
        bRead = new BinaryReader(ns);
        bWrite = new BinaryWriter(ns);
        bWrite.Write("entered");
        bWrite.Flush();


        bWrite.Write("entered");
        bWrite.Flush();
    }

    public void Server()
    {
        TcpListener listener = new TcpListener(2055);
        listener.Start();
        TcpClient CL = listener.AcceptTcpClient();
        NetworkStream ns = CL.GetStream();
        BinaryReader bread = new BinaryReader(ns);
        BinaryWriter bwrite = new BinaryWriter(ns);

        while(true)
        {
            MessageBox.Show("waiting...");
            string res = bread.ReadString();
            MessageBox.Show(res);
        }
}

このコードは、ボタン Button_click() をクリックしても応答しません。

    TcpClient client;
    NetworkStream ns;
    BinaryReader bRead;
    BinaryWriter bWrite;

    private void Window_Loaded(object sender, RoutedEventArgs e)
    {
        Task t = new Task(new Action(() =>
        {
            Server();
        }));
        t.Start();
        Thread.Sleep(100);
        Client();
    }

    public void Client()
    {
    }

    public void Server()
    {
        TcpListener listener = new TcpListener(2055);
        listener.Start();
        TcpClient CL = listener.AcceptTcpClient();
        NetworkStream ns = CL.GetStream();
        BinaryReader bread = new BinaryReader(ns);
        BinaryWriter bwrite = new BinaryWriter(ns);

        while(true)
        {
            MessageBox.Show("waiting...");
            string res = bread.ReadString();
            MessageBox.Show(res);
        }
}

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        client = new TcpClient(Dns.GetHostName(), 2055);
        ns = client.GetStream();
        bRead = new BinaryReader(ns);
        bWrite = new BinaryWriter(ns);
        bWrite.Write("entered");
        bWrite.Flush();


        bWrite.Write("entered");
        bWrite.Flush();
    }
4

0 に答える 0