加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – WCF调用函数而不等待它完成它的工作?

发布时间:2020-12-15 18:15:06 所属栏目:百科 来源:网络整理
导读:在每次从WCF服务调用函数时,在客户端,它等待直到WCF服务上的函数完成,就像调用本地函数一样.所以我为每个在新线程中启动预期函数的函数添加了一个额外的函数,所以我的几乎所有函数都是这样的: EX: 我从CLIENT端调用一个函数client.ReceiveFile(): private
在每次从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();
        }
    }

关键是,当我从客户端sendFile时,它告诉服务开始接收,但如果我没有启动新线程,客户端将等待服务接收文件,并且不会发送文件数据.

因此,WCF支持一种不会使客户端等待服务功能完成的方式!或者我将不得不使用上述方法?

解决方法

您正在寻找的是[OperationContract(IsOneWay = true)],有关详细信息,请参阅 http://msdn.microsoft.com/en-us/magazine/cc163537.aspx

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读