早期.NET版本没有FTP的部件,自己动手做过一个,用Socket/TcpClient/TcpListener等一些东西,别的基于TCP的东西应该也脱离不了它们,同步就把发送/接收放在同一线程(Thread)里,这样程序就死等直到接收完成,异步就把接收放到后台线程,主线程可以做别的事,当后台线程完成接收,再回调主线程,除非主线程特别忙,后台线程插不进来,connection就占用主,一般情况下应该不影响性能。
另外我觉得从connection建立到callback结束,connection是被hold住的,会有个timeout的值,在规定时间没完成动作,connection就自杀了,产生一个Timeout的错误。
总的来说除非调用者线程特别忙,用callback应该不会影响性能,反过来系统要是达到瓶颈,不用callback性能估计也不行。
另外我觉得从connection建立到callback结束,connection是被hold住的,会有个timeout的值,在规定时间没完成动作,connection就自杀了,产生一个Timeout的错误。
总的来说除非调用者线程特别忙,用callback应该不会影响性能,反过来系统要是达到瓶颈,不用callback性能估计也不行。