我在 WPF 中工作,并且我有一个启动监听套接字的对话框窗口,并且应该在有人连接后立即关闭。这是我天真的,不工作的代码段:
void acceptCallback(IAsyncResult iar)
{
socket = listenSocket.EndAccept(iar);
DialogResult = true; // error here
Close();
}
private void ValidButton_Click(object sender, RoutedEventArgs e)
{
IPEndPoint iep = new IPEndPoint(IPAddress.Any, port);
listenSocket.Bind(iep);
listenSocket.Listen(1);
listenSocket.BeginAccept(acceptCallback, null);
}
我收到一条错误消息,告诉我无法从此线程访问 DialogResult,我知道我的“acceptCallback”函数是从异步运行接受的线程调用的,但我真的不知道如何获得我想要的行为。
我如何从这个回调中告诉主线程它应该以正确的方式关闭对话窗口?