2009-12-19 4 views
1

Я пытаюсь отправить файлы с локального FTP, потому что я блокирую TCPClient перед отправкой файла. И эта передача файлов выполняется в другом потоке. Так что основной поток не влияет.Thread Synchronization and Thread Pausing Resuming

Как и при попытке использовать заблокированный TCPClient перед его разблокировкой, он зависает. Итак, как мне следует продолжить, так что в то же время я могу отправить файл, также получить файл. (Обе функции находятся в другом потоке, но блокируют один и тот же объект TCPClient).

Я также думаю, чтобы приостановить первый поток и выполнить второй, а затем, когда второй закончен и после возобновления первый.

Пожалуйста, помогите, я потерялся в нитках.

+0

Скажите, какую платформу вы используете ... Я принимал .NET на основе имени класса, но я мог ошибаться. –

ответ

2

Вы не должны использовать тот же самый TcpClient из разных потоков, чтобы делать разные вещи - он представляет собой одно соединение, поэтому данные, отправленные и полученные по двум различным потокам, будут мешать друг другу. (Даже если вы «посылать» файл в одном и «прием» файла в другой, и нужно будет отправить и получать данные.)

Я предлагаю вам использовать два различных TcpClient экземпляров.

0

TCP - это двунаправленный протокол. Даже если вы получаете файл, вы все равно отправляете подтверждение. Это означает, что TCP работает в контексте : есть один конец приемника и один конец отправителя.

Вы не должны смешивать роль в экземпляре. Используйте 2 разных экземпляра. Они могут работать параллельно.