【问题标题】:WCF + Thread, cant .Open() out of the threadWCF + 线程,不能 .Open() 出线程
【发布时间】:2013-08-08 19:00:15
【问题描述】:

所以我有一个服务接口(IServiceContract)及其实现(ServiceContract)

在我的客户端中,我在客户端的构造函数上创建了一个 this 的实例。

Service.ServiceContractClient objProxy; //This is the server instance
myCallbacks = new ClientBase(new InstanceContext(this));
objProxy = new Service.ServiceContractClient(new InstanceContext(myCallbacks), "1");

所以我应该可以随时发送objProxy.Open()

但是要开始通信,它是通过一个握手的线程来完成的。 Handshake 是服务器中的 wcf 方法,从客户端调用。

所以如果我在线程外执行Open,它会说它有问题并且不让我这样做

如果我把它放在里面,它会起作用,但这是不正确的,它应该是出来的。

线程只是一种让我的客户端在连接模式下休眠的机制。

    public void Connect()
    {
        objClientThread = new Thread(start) { IsBackground = true };
        objClientThread.Start();
    }

    private void start()
    {
            if (performHandshake())
            {
                IsConnected = true;
                while (IsConnected)
                {
                    System.Threading.Thread.Sleep(500);
                }
            }
     }


    private Boolean performHandshake()
    {
            objProxy.Open();
            Debug.WriteLine(String.Format("{0} is Performing handshake...", Name));
            string xmlConfig = objProxy.Handshake(Name, ModuleType, RecordTypes, Description, Version);
            Debug.WriteLine(String.Format("{0} is loading configuration...", Name));
            objConfiguration.LoadXml(xmlConfig as String);
            try
            {
                if (OnHandshakeCompleted != null)
                    OnHandshakeCompleted(this, new EventArgs());
            }
            catch
            {
                return false;
            }
            //Handshake successfull
            return true;
    }

如何将 Open 置于线程之外并使其在线程内工作(我可以调用它但它会说它处于故障状态。

【问题讨论】:

    标签: c# multithreading wcf named-pipes


    【解决方案1】:

    我终于使用了start() 方法并且成功了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-08
      • 1970-01-01
      • 2011-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-27
      • 2010-11-01
      相关资源
      最近更新 更多