Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何防止异步方法表单处理?_C#_Asynchronous - Fatal编程技术网

C# 如何防止异步方法表单处理?

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并在处理任何其他代码之前将其连接

例如:

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());
    }
}