コード例 #1
0
        private void Worker(object cancellationToken)
        {
            try
            {
                var token = (CancellationToken)cancellationToken;
                while (!token.IsCancellationRequested)
                {
                    using (var me = Process.GetCurrentProcess())
                        Console.WriteLine($"Worker: {DateTime.Now} - Hello, I am {me.ProcessName} ({me.Id}) invoked by {Environment.CommandLine}");

                    if (IsInteractive)
                    {
                        Console.Write("q to exit: ");
                        var read = Console.ReadLine();
                        Console.WriteLine(" line read...");
                        if (token.IsCancellationRequested || read?.ToLowerInvariant() == "q")
                        {
                            break;
                        }
                    }
                    else
                    {
                        Thread.Sleep(1000);
                    }
                }

                Console.WriteLine("## Worker: thread ended by user");
                Terminated?.Invoke(this, EventArgs.Empty);
            }
            catch (ThreadInterruptedException)
            {
                // This is used to force us out of the ReadLine call...
                Console.WriteLine("## Worker: thread interrupted by caller");
            }
        }
コード例 #2
0
        public void Terminate()
        {
            OnTerminate();

            Terminated?.Invoke(this);
            AnyComponentTerminated?.Invoke(this);
        }
コード例 #3
0
        private void Worker(object cancellationToken)
        {
            var token = (CancellationToken)cancellationToken;

            while (!token.IsCancellationRequested)
            {
                using (var me = Process.GetCurrentProcess())
                    Console.WriteLine($"Worker: {DateTime.Now} - Hello, I am {me.ProcessName} ({me.Id}) invoked by {Environment.CommandLine}");

                if (IsInteractive)
                {
                    var read = ReadLine.Read(token, "q to exit: ");

                    ////Console.Write("q to exit: ");
                    ////var read = ConsoleEx.ReadLine(token); // Cannot use the regular ReadLine here: it is blocking...
                    Console.WriteLine($">line read: '{read}'");
                    if (token.IsCancellationRequested || read?.ToLowerInvariant() == "q")
                    {
                        break;
                    }
                }
                else
                {
                    Thread.Sleep(1000);
                }
            }

            Console.WriteLine("## Worker: thread ended by user");
            Terminated?.Invoke(this, EventArgs.Empty);
        }
コード例 #4
0
ファイル: WinDbgWrapper.cs プロジェクト: sihaisz/windbg-debug
 private MessageResult DoEndSession()
 {
     _cancel.Cancel();
     _debugger.EndSession(DEBUG_END.ACTIVE_TERMINATE);
     Terminated?.Invoke(this, null);
     return MessageResult.Empty;
 }
コード例 #5
0
        private async Task Callback(object source, ActionEventArgs e)
        {
            if (Host.ShuttingDown)
            {
                return;
            }

            switch (e.ActionType)
            {
            case PluginActionType.SignalTerminate:
                if (Terminated == null)
                {
                    break;
                }

                await Terminated.Invoke(this, EventArgs.Empty);

                break;

            case PluginActionType.RegisterMethod:
                if (!(e.Result is IAsyncRegistrar <ServerMessagedEventArgs>))
                {
                    break;
                }

                Host.RegisterMethod((IAsyncRegistrar <ServerMessagedEventArgs>)e.Result);
                break;

            case PluginActionType.SendMessage:
                if (!(e.Result is CommandEventArgs) ||
                    CommandRecieved == null)
                {
                    break;
                }

                await CommandRecieved.Invoke(this, (CommandEventArgs)e.Result);

                break;

            case PluginActionType.Log:
                if (!(e.Result is string))
                {
                    break;
                }

                if (Log == null)
                {
                    return;
                }

                await Log.Invoke(this, new BasicEventArgs((string)e.Result));

                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
コード例 #6
0
ファイル: Client.cs プロジェクト: avirule/Convex-IRC-Library
        private async Task OnTerminated(object source, EventArgs e)
        {
            if (Terminated == null)
            {
                return;
            }

            await Terminated?.Invoke(source, e);
        }
コード例 #7
0
        public void Terminate(string reason)
        {
            if (IsTerminated)
            {
                throw new ContractWasAlreadyTerminatedException();
            }

            TerminationReason = reason ?? throw new ArgumentNullException(nameof(reason));
            IsTerminated      = true;

            Terminated?.Invoke(this, new ContractTerminatedEventArgs(reason));
        }
コード例 #8
0
        private void ThreadMethod()
        {
            // Start the dispatcher of the thread and set the started event
            _dispatcher = Dispatcher.CurrentDispatcher;
            _dispatcher.BeginInvoke(new ThreadStart(() => _threadStarted.Set()), DispatcherPriority.Send);

            Dispatcher.Run();

            Terminated?.Invoke(this, EventArgs.Empty);

            _threadStarted.Close();
        }
コード例 #9
0
        private void Heartbeat(object state)
        {
            if (_heartbeatTimer == null)
            {
                return;
            }

            _heartBeatLostCounter = Interlocked.Increment(ref _heartBeatLostCounter);

            if (_heartBeatLostCounter > _maxHeartBeatLost)
            {
                Terminated?.Invoke(this, EventArgs.Empty);
            }
        }
コード例 #10
0
ファイル: RootState.cs プロジェクト: fiar/com.kernel.hsm
        public void Terminate()
        {
            if (IsRun)
            {
                IsRun = false;
                DestroyChildren(this);

                if (Terminated != null)
                {
                    Terminated.Invoke();
                }
            }

            _firedMessages.Clear();
        }
コード例 #11
0
ファイル: SessionHelper.cs プロジェクト: radtek/Insomnia
        private void Instance_Terminated(SessionHelperInstance instance, bool forced)
        {
            if (forced)
            {
                EventLog.WriteEntry($"SessionHelper terminated (SID={instance.SID}, PID={instance.PID}) = hung", EventLogEntryType.Error, 82);
            }

            instance.Terminated -= Instance_Terminated;
            instance.Started    -= Instance_Started;

            lock (instances)
            {
                instances.Remove(instance);
            }

            Terminated?.Invoke(instance);
        }
コード例 #12
0
        private void InitializeWindow()
        {
            window                 = uiFactory.CreateBrowserWindow(control, settings, isMainInstance);
            window.Closing        += () => Terminated?.Invoke(Id);
            window.AddressChanged += Window_AddressChanged;
            window.BackwardNavigationRequested += Window_BackwardNavigationRequested;
            window.DeveloperConsoleRequested   += Window_DeveloperConsoleRequested;
            window.ForwardNavigationRequested  += Window_ForwardNavigationRequested;
            window.ReloadRequested             += ReloadRequested;
            window.ZoomInRequested             += ZoomInRequested;
            window.ZoomOutRequested            += ZoomOutRequested;
            window.ZoomResetRequested          += ZoomResetRequested;
            window.UpdateZoomLevel(CalculateZoomPercentage());
            window.Show();

            logger.Debug("Initialized browser window.");
        }
コード例 #13
0
        internal void Initialize()
        {
            var contextMenuHandler = new ContextMenuHandler();
            var displayHandler     = new DisplayHandler();
            var downloadLogger     = logger.CloneFor($"{nameof(DownloadHandler)} {Id}");
            var downloadHandler    = new DownloadHandler(appConfig, settings, downloadLogger);
            var keyboardHandler    = new KeyboardHandler();
            var lifeSpanHandler    = new LifeSpanHandler();
            var requestHandler     = new RequestHandler(appConfig);

            displayHandler.FaviconChanged  += DisplayHandler_FaviconChanged;
            displayHandler.ProgressChanged += DisplayHandler_ProgressChanged;
            downloadHandler.ConfigurationDownloadRequested += DownloadHandler_ConfigurationDownloadRequested;
            keyboardHandler.ReloadRequested    += ReloadRequested;
            keyboardHandler.ZoomInRequested    += ZoomInRequested;
            keyboardHandler.ZoomOutRequested   += ZoomOutRequested;
            keyboardHandler.ZoomResetRequested += ZoomResetRequested;
            lifeSpanHandler.PopupRequested     += LifeSpanHandler_PopupRequested;

            control = new BrowserControl(contextMenuHandler, displayHandler, downloadHandler, keyboardHandler, lifeSpanHandler, requestHandler, url);
            control.AddressChanged      += Control_AddressChanged;
            control.LoadingStateChanged += Control_LoadingStateChanged;
            control.TitleChanged        += Control_TitleChanged;
            control.Initialize();

            logger.Debug("Initialized browser control.");

            window                 = uiFactory.CreateBrowserWindow(control, settings, isMainInstance);
            window.Closing        += () => Terminated?.Invoke(Id);
            window.AddressChanged += Window_AddressChanged;
            window.BackwardNavigationRequested += Window_BackwardNavigationRequested;
            window.DeveloperConsoleRequested   += Window_DeveloperConsoleRequested;
            window.ForwardNavigationRequested  += Window_ForwardNavigationRequested;
            window.ReloadRequested             += ReloadRequested;
            window.ZoomInRequested             += ZoomInRequested;
            window.ZoomOutRequested            += ZoomOutRequested;
            window.ZoomResetRequested          += ZoomResetRequested;
            window.UpdateZoomLevel(CalculateZoomPercentage());

            logger.Debug("Initialized browser window.");
        }
コード例 #14
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="et"></param>
        /// <param name="arg"></param>
        private void CompleteProcessing(EventEntry entry)
        {
            switch (entry.Type)
            {
            case EventType.Connecting:
                Connecting?.Invoke(this, ( int )entry.Argument);
                break;

            case EventType.Listening:
                Listening?.Invoke(this, ( int )entry.Argument);
                break;

            case EventType.Connected:
                Connected?.Invoke(this, ( int )entry.Argument);
                break;

            case EventType.Disconnected:
                Disconnected?.Invoke(this, ( int )entry.Argument);
                break;

            case EventType.Terminated:
                Terminated?.Invoke(this, EventArgs.Empty);
                break;

            case EventType.Sent:
                Sent?.Invoke(this, (Tuple <byte [], Message>)entry.Argument);
                break;

            case EventType.Received:
                Received?.Invoke(this, (Tuple <byte [], Message>)entry.Argument);
                break;

            case EventType.T3Timeout:
                T3Timeout?.Invoke(this, ( Message )entry.Argument);
                break;

            default: break;
            }
        }
コード例 #15
0
        private void OnEventArrived(object sender, System.Management.EventArrivedEventArgs e)
        {
            try
            {
                string eventName = e.NewEvent.ClassPath.ClassName;

                if (eventName.CompareTo("__InstanceCreationEvent") == 0)
                {
                    // Started
                    Started?.Invoke(this, e);
                }
                else if (eventName.CompareTo("__InstanceDeletionEvent") == 0)
                {
                    // Terminated
                    Terminated?.Invoke(this, e);
                }
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine(ex.Message);
            }
        }
コード例 #16
0
 internal void Terminate()
 {
     logger.Info($"Instance has terminated.");
     window.Close();
     Terminated?.Invoke(Id);
 }
コード例 #17
0
ファイル: Network.cs プロジェクト: xRoier/DiscordIntegration
 /// <summary>
 /// Called after the network termination.
 /// </summary>
 /// <param name="sender">The sender instance.</param>
 /// <param name="ev">The <see cref="TerminatedEventArgs"/> instance.</param>
 protected virtual void OnTerminated(object sender, TerminatedEventArgs ev) => Terminated?.Invoke(sender, ev);
コード例 #18
0
 private void Window_Closing()
 {
     logger.Info($"Instance has terminated.");
     control.Destroy();
     Terminated?.Invoke(Id);
 }
コード例 #19
0
 public void Terminate()
 {
     Terminated?.Invoke(this);
     End();
 }
コード例 #20
0
 private void Process_Exited(object sender, System.EventArgs e)
 {
     Terminated?.Invoke(process.ExitCode);
 }
コード例 #21
0
 private void Process_Terminated(int exitCode)
 {
     logger.Info($"Application instance has terminated with exit code {exitCode}.");
     FinalizeEvents();
     Terminated?.Invoke(Id);
 }
コード例 #22
0
 /// <summary>
 /// 触发任务结束事件。
 /// </summary>
 /// <param name="args">事件参数。。</param>
 protected void OnTerminate(TaskTerminateEventArgs args)
 {
     Terminated?.Invoke(this, args);
 }
コード例 #23
0
 /// <summary>
 /// Overrides this method if want to handle behavior when the application is terminated.
 /// If base.OnTerminate() is not called, the event 'Terminated' will not be emitted.
 /// </summary>
 /// <since_tizen> 3 </since_tizen>
 protected virtual void OnTerminate()
 {
     Terminated?.Invoke(this, EventArgs.Empty);
 }
コード例 #24
0
 protected virtual void OnTerminated()
 {
     DetectingTermination = false;
     Terminated?.Invoke(this, EventArgs.Empty);
 }
コード例 #25
0
 private void ConnectionTerminatedCallback(HeliosConnectionException reason, IConnection closedchannel)
 {
     Terminated?.Invoke(reason, closedchannel);
 }
コード例 #26
0
ファイル: Behavior.cs プロジェクト: Your-Die/BehaviourTree
 /// <inheritdoc />
 public virtual void Terminate()
 {
     IsTerminated = true;
     Terminated?.Invoke(this, CurrentStatus);
 }
コード例 #27
0
 protected void FireTerminated()
 {
     Terminated?.Invoke(this, EventArgs.Empty);
 }
コード例 #28
0
 /// <summary>
 /// Invokes Terminated event
 /// </summary>
 public void Terminate()
 {
     Terminated?.Invoke(this, EventArgs.Empty);
 }
コード例 #29
0
 public void ConnectionTerminated(ClusterInbounConnection connection)
 {
     Terminated?.Invoke(this, new ClusterConnectionEventArgs(connection));
 }
コード例 #30
0
 /// <summary>
 /// Terminates the session.
 /// </summary>
 private void HandleTerminate()
 {
     Terminated?.Invoke(this, EventArgs.Empty);
 }