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

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

            if (runDevice != null)
            {
                Func <IFromDevice, IDeviceToDevice, object> deviceConnctor = runDevice.RunDeviceConnector;
                DeviceConnectorToken token = new DeviceConnectorToken(e.FromDevice.DeviceID, deviceConnctor);
                deviceConnctor.BeginInvoke(e.FromDevice, e.DeviceToDevice, new AsyncCallback(DeviceConnectorCallback), token);
            }
        }
コード例 #2
0
ファイル: ServerBase.cs プロジェクト: zmk523/ServerSuperIO
        private void DeviceConnectorCallback(IAsyncResult ar)
        {
            DeviceConnectorToken token        = (DeviceConnectorToken)ar.AsyncState;
            IRunDevice           sourceDevice = this.DeviceManager.GetDevice(token.FromDeviceID);

            if (sourceDevice == null)
            {
                return;
            }
            object obj = null;

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

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