Changeset 1836


Ignore:
Timestamp:
Aug 19, 2010, 8:41:50 AM (11 years ago)
Author:
kopal
Message:
  • SynchronousEvents can now be enabled (means that there will be no using of new threads for event handling)
  • Scheduler got an exception handler
Location:
trunk/CrypPlugins/WorkspaceManager
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/CrypPlugins/WorkspaceManager/Execution/ExecutionEngine.cs

    r1812 r1836  
    606606                    }
    607607
    608                     protocol = this.waitingProtocols.Dequeue();
    609                     ProtocolStatus status = protocol.Run();
    610 
    611                     lock (this)
    612                     {
    613                         switch (status)
     608                    try
     609                    {
     610                        protocol = this.waitingProtocols.Dequeue();
     611                        ProtocolStatus status = protocol.Run();
     612
     613                        lock (this)
    614614                        {
    615                             case ProtocolStatus.Created:
    616                                 System.Diagnostics.Debug.Assert(false);
    617                                 break;
    618                             case ProtocolStatus.Ready:
    619                                 this.waitingProtocols.Enqueue(protocol);
    620                                 break;
    621                             case ProtocolStatus.Waiting:
    622                                 break;
    623                             case ProtocolStatus.Terminated:
    624                                 System.Diagnostics.Debug.Assert(!this.waitingProtocols.Contains(protocol));
    625                                 this.RemoveProtocol(protocol);
    626                                 break;
     615                            switch (status)
     616                            {
     617                                case ProtocolStatus.Created:
     618                                    System.Diagnostics.Debug.Assert(false);
     619                                    break;
     620                                case ProtocolStatus.Ready:
     621                                    this.waitingProtocols.Enqueue(protocol);
     622                                    break;
     623                                case ProtocolStatus.Waiting:
     624                                    break;
     625                                case ProtocolStatus.Terminated:
     626                                    System.Diagnostics.Debug.Assert(!this.waitingProtocols.Contains(protocol));
     627                                    this.RemoveProtocol(protocol);
     628                                    break;
     629                            }
    627630                        }
    628631                    }
    629                    
     632                    catch (Exception ex)
     633                    {
     634                        System.Diagnostics.Debug.Fail("Error during scheduling: " + ex.Message + " - " + ex.InnerException);
     635                    }
    630636                }
    631637            }
  • trunk/CrypPlugins/WorkspaceManager/WorkspaceManager.cs

    r1809 r1836  
    364364                executing = true;
    365365
     366                if (((WorkspaceManagerSettings)this.Settings).SynchronousEvents)
     367                {
     368                    EventsHelper.AsynchronousProgressChanged = false;
     369                    EventsHelper.AsynchronousGuiLogMessage = false;
     370                    EventsHelper.AsynchronousStatusChanged = false;
     371                }
     372
    366373                //Get the gui Thread
    367374                this.WorkspaceSpaceEditorView.Dispatcher.Invoke(DispatcherPriority.Normal, (SendOrPostCallback)delegate
     
    410417                GuiLogMessage("Exception during the execution: " + ex.Message, NotificationLevel.Error);
    411418                executing = false;
     419                if (((WorkspaceManagerSettings)this.Settings).SynchronousEvents)
     420                {
     421                    EventsHelper.AsynchronousProgressChanged = true;
     422                    EventsHelper.AsynchronousGuiLogMessage = true;
     423                    EventsHelper.AsynchronousStatusChanged = true;
     424                }
    412425            }
    413426        }
     
    438451                return;
    439452            }
     453
    440454            EventsHelper.AsynchronousPropertyChanged = true;
     455
     456            if (((WorkspaceManagerSettings)this.Settings).SynchronousEvents)
     457            {
     458                EventsHelper.AsynchronousProgressChanged = true;
     459                EventsHelper.AsynchronousGuiLogMessage = true;
     460                EventsHelper.AsynchronousStatusChanged = true;
     461            }
     462
    441463            try
    442464            {
  • trunk/CrypPlugins/WorkspaceManager/WorkspaceManagerSettings.cs

    r1805 r1836  
    7171        }
    7272
     73        private bool synchronousEvents = false;
     74        [TaskPane("SynchronousEvents", "Should the event handling be synchronous?", null, 1, false, DisplayLevel.Beginner, ControlType.CheckBox)]
     75        public bool SynchronousEvents
     76        {
     77            get
     78            {
     79                return synchronousEvents;
     80            }
     81            set
     82            {
     83                synchronousEvents = value;
     84                OnPropertyChanged("SynchronousEvents");
     85            }
     86        }
     87
    7388        #endregion
    7489
Note: See TracChangeset for help on using the changeset viewer.