所以我有一个服务接口(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 从线程中取出并使其在线程内工作(我可以调用它,但它会说它处于故障状态。