/// <summary> /// 修理入渠情報をタイマに反映するRPC呼びだし /// </summary> /// <param name="dockData"></param> public void UpdateNDock(KCB2.MemberData.Dock dockData) { foreach (var dock in dockData.RepairDock) { var info = new NDockInfo(dock); _ndockList[dock.Order - 1] = info; System.Diagnostics.Debug.WriteLine(info); RPCUpdateNDock(info); } }
/// <summary> /// UpdateNDockをWCF RPCで呼び出す /// </summary> /// <param name="info"></param> /// <returns>失敗したらfalse</returns> void RPCUpdateNDock(NDockInfo info) { if (info == null) { return; } if (!ExistWCFServer) { return; } Task.Factory.StartNew(() => { try { /* RPCが失敗するとproxy objectに失敗フラグが立つようで、 * 再度callすると以下の例外が飛ぶ。 * なので、proxy objectは毎回生成することにした。 * * CommunicationObjectFaultedException * 通信オブジェクト System.ServiceModel.Channels.ServiceChannel は、 * 状態が Faulted であるため通信に使用できません。 */ var notifyProxy = _notifyFactory.CreateChannel(); notifyProxy.UpdateNDock(info.DockNum, info.ShipName ?? "", info.FinishTime); ((IClientChannel)notifyProxy).Close(); } catch (EndpointNotFoundException exp) { Debug.WriteLine("UpdateNDock:EndpointNotFoundException\n" + exp.ToString()); } }); return; }
/// <summary> /// UpdateNDockをWCF RPCで呼び出す /// </summary> /// <param name="info"></param> /// <returns>失敗したらfalse</returns> void RPCUpdateNDock(NDockInfo info) { if (info == null) return; if (!ExistWCFServer) return; Task.Factory.StartNew(() => { try { /* RPCが失敗するとproxy objectに失敗フラグが立つようで、 * 再度callすると以下の例外が飛ぶ。 * なので、proxy objectは毎回生成することにした。 * * CommunicationObjectFaultedException * 通信オブジェクト System.ServiceModel.Channels.ServiceChannel は、 * 状態が Faulted であるため通信に使用できません。 */ var notifyProxy = _notifyFactory.CreateChannel(); notifyProxy.UpdateNDock(info.DockNum, info.ShipName ?? "", info.FinishTime); ((IClientChannel)notifyProxy).Close(); } catch (EndpointNotFoundException exp) { Debug.WriteLine("UpdateNDock:EndpointNotFoundException\n" + exp.ToString()); } }); return; }