WCF вызывает функцию, не дожидаясь завершения ее работы?

На стороне клиента каждый раз, когда я вызываю функцию из моей службы WCF, она ожидает завершения функции в службе WCF, как вызов локальной функции. Поэтому я добавил дополнительную функцию для каждого из них, которая запускает предполагаемую функцию в новом потоке, так что почти все мои функции выглядят так:

EX:
Я вызываю функцию со стороны CLIENT client.ReceiveFile():

private void SendFile(Socket socket, Job job, DoWorkEventArgs e)
    {
        UpdateInfo(job.Name, job.Icon, job.Size);
        client.ReceiveFile((_File)job.Argument, bufferSize);
        SizeAll = job.Size;
        UpdateCurrFile(((_File)job.Argument).Path, "1");
        SendX(socket, ((_File)job.Argument).Path, e);
    }

На сервере я должен сделать это так:

 public void ReceiveFile(_File file, int bufferSize)
    {
        System.Threading.Thread th = new System.Threading.Thread(unused => ReceiveFileTh(client, file.Name, file.Size, bufferSize));
        th.Start();
    }
    private void ReceiveFileTh(Socket client, string destPath, long size, int bufferSize)
    {
        try
        {
            ReceiveX(client, destPath, size, bufferSize);
        }
        finally
        {
            CloseClient();
        }
    }

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

Так поддерживает ли WCF способ, при котором клиент не будет ждать выполнения сервисной функции! или мне придется использовать вышеуказанный метод?

6
задан McGarnagle 26 April 2012 в 05:18
поделиться