线程同步和线程暂停\恢复

时间:2009-12-19 07:18:30

标签: multithreading thread-safety ftp-client

我正在尝试将文件从本地发送到FTP,因为我在发送文件之前锁定了TCPClient。并且该文件发送在另一个线程中。这样主线程就不会受到影响。

当我尝试在解锁之前使用锁定的TCPClient时,它会挂起。那么我应该如何继续,以便同时我可以发送文件也接收文件。(两个函数都在不同的线程但锁定相同的TCPClient对象)。

我也想暂停第一个线程并执行第二个线程,然后在第二个线程完成后继续执行第二个线程。

请帮助,我迷失在线程中。

2 个答案:

答案 0 :(得分:2)

您不应该使用来自不同线程的相同TcpClient来执行不同的操作 - 它表示单个连接,因此在两个不同线程上发送和接收的数据会相互干扰。 (即使您在一个文件中“发送”文件而在另一个文件中“接收”文件,两者都需要发送接收数据。)

我建议你使用两个不同的TcpClient个实例。

答案 1 :(得分:0)

TCP是双向协议。即使您收到文件,您也会一直发送确认。这意味着TCP在上下文中工作:有一个接收者端,一个发送者端。

您不应在实例中混合角色。使用2个不同的实例。它们可以并行工作。