UDP経由でチャットを書いています。コンソールアプリケーションからWindowsフォームに移動しようとしたときに、ブロック関数ReceiveFrom()で問題が発生しました。フォームを作成し、ReceiveFrom()を使用して着信パケットをリッスンするためのボタンをクリックすると、プログラムがブロックされます。私はこのようなものを書いています:
private void Listen_button_click(object sender, EventArgs e)
{
while(true){
ReceiveFrom(buf, ref clientEP);
data = buf.ToData(); //convert from bytes to string.
displayMessageDelegate(data);
packet = new Packet(acknowlegment);//acknowledgment that packet was received.
ack = packet.ToStream();
SendTo(ack, clientEP);//send ack, so client knows everything is ok.
}
私はTCPを使用できることを知っており、生活ははるかに簡単になるでしょうが、このようにするのが私の仕事です。また、非ブロッキングのBeginReceiveFrom()を使用できることは知っていますが、ブロッキング関数を使用してWFでリッスンできるかどうかを知りたいと思います。