コード例 #1
0
        public void HandleEventsAsync(IHmeConnection connection)
        {
            HmeConnectionWrapper wrapper = connection as HmeConnectionWrapper;

            if (wrapper != null)
            {
                ApplicationEventsData data = new ApplicationEventsData {
                    DriverGuid = _thisGuid, ConnectionGuid = Guid.NewGuid()
                };
                _connections.Add(data.ConnectionGuid, wrapper.HmeConnection);
                wrapper.HmeConnection.BeginHandleEvent(ApplicationEventsHandled, data);
            }
        }
コード例 #2
0
        private static void ApplicationEventsHandled(IAsyncResult result)
        {
            // this is done so that only guids cross appdomain boundary
            ApplicationEventsData eventsData = (ApplicationEventsData)result.AsyncState;
            HmeApplicationDriver  driver     = _instances[eventsData.DriverGuid];
            HmeConnection         connection = driver._connections[eventsData.ConnectionGuid];

            connection.EndHandleEvent(result);
            if (connection.Application.IsConnected)
            {
                connection.BeginHandleEvent(ApplicationEventsHandled, result.AsyncState);
            }
            else
            {
                driver._connections.Remove(eventsData.ConnectionGuid);
                driver.OnApplicationEnded(MyApplicationEndedEventArgs.Empty);
            }
        }