コード例 #1
0
 /// <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);
     }
 }
コード例 #2
0
        /// <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;
        }
コード例 #3
0
ファイル: TimerRPC.cs プロジェクト: lscyane/KCBr
        /// <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;
        }
コード例 #4
0
ファイル: TimerRPC.cs プロジェクト: lscyane/KCBr
 /// <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);
     }
 }