我需要一个建议,因为我“被锁定”......
我有一个客户端服务器应用程序,在客户端进程和服务器进程之间使用.NetRemoting。
服务器进程将事件引发给调用方法的客户端。
然后,客户端使用BackGroundWorker将值传输到用户界面。
通常,客户端启动时服务器已经运行。
- 当调用BackGroundWorker.DoWork()时,Thread.CurrentThread.IsBackground等于True
- 在BackGroundWorker_RunWorkerCompleted事件中,Thread.CurrentThread.IsBackground等于 False
但是,如果在客户端加载(.exe正在打开)期间,它需要在连接之前打开(使用Process.Start())服务器进程(.exe)
然后,在BackGroundWorker_RunWorkerCompleted中,Thread.CurrentThread.IsBackground仍然等于 True ,并且在此线程中无法更改UI。
在这种情况下,我需要打开另一个客户端(连接到同一个服务器)以获得良好的行为。
这两种情况之间可能有什么区别?
感谢。
答案 0 :(得分:0)
你应该拥有什么:
客户端:
--UI thread:启动BGWorker并运行BackgroundWorker.RunWorkerCompleted
--Backgroundthread:运行BackgroundWorker.DoWork,与服务器通信
< - >
服务器:与客户端通信
为什么您的服务器在您的客户端启动时尚未运行? +如果他们在同一台机器上运行,为什么要使用远程处理?
答案 1 :(得分:0)
我找到了(a)解决方案: 在客户端启动中:
lChannelTCP = new TcpChannel(lProps, provider, providerSrv);
ChannelServices.RegisterChannel(lChannelTCP, false);
或(没有测试过)
RemotingConfiguration.ApplicationName = "EDV";
必须在之前设置 服务器进程启动!