C# 如何防止异步方法表单处理?
我有一个问题,代码过程的一部分比预期的要快。在某些情况下,我调用client.BeginConnect并在处理任何其他代码之前将其连接 例如:C# 如何防止异步方法表单处理?,c#,asynchronous,C#,Asynchronous,我有一个问题,代码过程的一部分比预期的要快。在某些情况下,我调用client.BeginConnect并在处理任何其他代码之前将其连接 例如: client.BeginConnect(remoteEP, new AsyncCallback(ConnectCallback), client); // this code below is preformed later because ConnectCallback is called to quickly Debug.WriteLine(
client.BeginConnect(remoteEP, new AsyncCallback(ConnectCallback), client);
// this code below is preformed later because ConnectCallback is called to quickly
Debug.WriteLine(client.LocalEndPoint.ToString());
这里的问题是方法ConnectCallback的执行速度有时比代码Debug.Writeline(..)快
我只需要阻止或启用ConnectCallback函数,这样Debug.Writeline将比ConnectCallback执行得更快
感谢您的帮助。这里有一篇很棒的MSDN文章:
因此,只需将
Debug.WriteLine()
调用移动到ConnectCallback()
方法中即可。这是一篇很棒的MSDN文章:
因此,只需将
Debug.WriteLine()
调用移动到ConnectCallback()
方法中。有趣的问题是,为什么要这样做?您试图实现什么?异步代码不能按您希望的方式工作。我希望这样,因为程序的某些部分不应该在另一部分之前处理。在我的示例中,在调试.Write line之前不应处理up ConnectCallback,因此ConnectCallback必须等待。@Bertoncelj1,请查看我的答案:Debug.WriteLine()
应该直接从ConnectCallback
调用,因为它是回调(即操作已完成)!=)我试过了,效果很好。。。。。但我仍然不知道如何防止异步方法被处理有趣的问题是你为什么要这样做?你想实现什么?异步代码不能按您希望的方式工作。我希望这样,因为程序的某些部分不应该在另一部分之前处理。在我的示例中,在调试.Write line之前不应处理up ConnectCallback,因此ConnectCallback必须等待。@Bertoncelj1,请查看我的答案:Debug.WriteLine()
应该直接从ConnectCallback
调用,因为它是回调(即操作已完成)!=)我试过了,效果很好。。。。。但我仍然不知道如何防止异步方法被处理
private static void ConnectCallback(IAsyncResult ar) {
try {
// Retrieve the socket from the state object.
Socket client = (Socket) ar.AsyncState;
// Complete the connection.
client.EndConnect(ar);
Console.WriteLine("Socket connected to {0}",
client.RemoteEndPoint.ToString());
// Signal that the connection has been made.
connectDone.Set();
} catch (Exception e) {
Console.WriteLine(e.ToString());
}
}