コード例 #1
0
ファイル: ServerBase.cs プロジェクト: zmk523/ServerSuperIO
        private void ServiceConnector(object source, Service.Connector.ServiceConnectorArgs e)
        {
            if (e == null)
            {
                return;
            }

            IRunDevice runDevice = this.DeviceManager.GetDeviceFromCode(e.ServiceToDevice.DeviceCode);

            if (runDevice != null)
            {
                Func <IFromService, IServiceToDevice, object> serviceConnctor = runDevice.RunServiceConnector;
                ServiceConnectorToken token = new ServiceConnectorToken(e.FromService.ServiceKey, serviceConnctor);
                serviceConnctor.BeginInvoke(e.FromService, e.ServiceToDevice, new AsyncCallback(ServiceConnectorCallback), token);
            }
        }
コード例 #2
0
ファイル: ServerBase.cs プロジェクト: zmk523/ServerSuperIO
        private void ServiceConnectorCallback(IAsyncResult ar)
        {
            ServiceConnectorToken token = (ServiceConnectorToken)ar.AsyncState;

            IService sourceService = ServiceManager.GetService(token.FromServiceKey);

            if (sourceService == null)
            {
                return;
            }

            object obj = null;

            try
            {
                obj = token.DeviceConnectorAsync.EndInvoke(ar);
            }
            catch (Exception ex)
            {
                try
                {
                    sourceService.ServiceConnectorCallbackError(ex);
                }
                catch (Exception e)
                {
                    this.Logger.Error(true, "", e);
                }
            }

            try
            {
                sourceService.ServiceConnectorCallback(obj);
            }
            catch (Exception ex)
            {
                this.Logger.Error(true, "", ex);
            }
        }