示例#1
0
            /// <summary>
            /// Submit an invoke request, if currently an invoke is done, this will be put as pending.
            /// </summary>
            public bool Invoke(TimeSpan minimumCallInterval, params object[] parameters)
            {
                lock (this)
                {
                    bool lastInvocationTimedOut = LastInvocationTimedOut;

                    if ((_currentExecutionResult != null && _currentExecutionResult.IsCompleted == false) ||
                        (_isCallPending && lastInvocationTimedOut == false))
                    {// Current call in progress, or a call already pending and not time for execution yet.
                        _isCallPending            = true;
                        _lastInvocationParameters = parameters;

                        _minimumCallInterval = TimeSpan.FromMilliseconds(Math.Min(minimumCallInterval.TotalMilliseconds, _minimumCallInterval.TotalMilliseconds));

                        return(false);
                    }

                    _isCallPending            = false;
                    _lastInvocationParameters = null;
                    _lastInvocation           = DateTime.Now;
                    // Reset the minimum call interval.
                    _minimumCallInterval    = TimeSpan.MaxValue;
                    _currentExecutionResult = WinFormsHelper.BeginManagedInvoke(_control, _delegate, parameters);
                    //System.Diagnostics.Trace.WriteLine(_control.Name, _delegate.Method.Name);
                }


                return(true);
            }
示例#2
0
        /// <summary>
        /// Invocation safety.
        /// </summary>
        /// <param name="activate"></param>
        public void SetActiveState(bool activate)
        {
            if (this.InvokeRequired == false)
            {
                if (this.IsHandleCreated == false)
                {
                    this.CreateControl();
                }

                this.Visible = true;
                DoActivate(activate);
            }
            else
            {
                WinFormsHelper.BeginManagedInvoke(this, delegate()
                {
                    if (this.IsHandleCreated == false)
                    {
                        this.CreateControl();
                    }

                    DoActivate(activate);
                });
            }
        }
示例#3
0
        /// <summary>
        /// Helper, automates the saving of items of virtual list to a CSV files.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public static void SaveVirtualListItemsToCSV(ListView virtualListViewEx1, RetrieveVirtualItemEventHandler handler)
        {
            using (SaveFileDialog dialog = new SaveFileDialog())
            {
                dialog.Title            = "Select save file";
                dialog.AddExtension     = true;
                dialog.RestoreDirectory = true;
                dialog.DefaultExt       = "csv";
                dialog.Filter           = "Text file (*.csv)|*.csv";

                if (dialog.ShowDialog() != DialogResult.OK)
                {
                    return;
                }

                StringBuilder builder = WinFormsHelper.VirtualListItemsToCSV(virtualListViewEx1, handler);
                using (FileWriterHelper helper = new FileWriterHelper())
                {
                    if (helper.Initialize(dialog.FileName) == false)
                    {
                        MessageBox.Show("Failed to save file.");
                        return;
                    }

                    helper.Write(builder.ToString());
                }
            }
        }
 public void Add(WinFormsHelper.AsyncResultInfo info)
 {
     if (_invokeWatchTimer.Enabled)
     {
         lock (this)
         {
             _invokeResults.Add(info);
         }
     }
 }
示例#5
0
        /// <summary>
        /// Constructor.
        /// </summary>
        public TracerControl()
        {
            InitializeComponent();
            _tracer = new Tracer();

            listView.VirtualItemsSelectionRangeChanged += new ListViewVirtualItemsSelectionRangeChangedEventHandler(listView_VirtualItemsSelectionRangeChanged);

            lock (listView)
            {
                listView.AdvancedColumnManagementUnsafe.Add(0, new VirtualListViewEx.ColumnManagementInfo()
                {
                    AutoResizeMode = ColumnHeaderAutoResizeStyle.ColumnContent
                });
                listView.AdvancedColumnManagementUnsafe.Add(1, new VirtualListViewEx.ColumnManagementInfo()
                {
                    FillWhiteSpace = true
                });
            }

            // Search items.
            _searchingMatchStrip       = new StringsControlToolStripEx();
            _searchingMatchStrip.Label = "Search";
            // Data source assigned on tracer assignment.
            //toolStripFilters.Items.Add(new ToolStripSeparator());
            WinFormsHelper.MoveToolStripItems(_searchingMatchStrip, toolStripFilters);

            // Mark items.
            _markingMatchStrip       = new StringsControlToolStripEx();
            _markingMatchStrip.Label = "Mark";
            _markingMatchStrip.SetDataSource(this, this.GetType().GetProperty("MarkingMatch"));
            toolStripFilters.Items.Add(new ToolStripSeparator());
            WinFormsHelper.MoveToolStripItems(_markingMatchStrip, toolStripFilters);

            // View exclude filtering...
            _viewExcludeStrip       = new StringsControlToolStripEx();
            _viewExcludeStrip.Label = "Exclude";
            WinFormsHelper.MoveToolStripItems(_viewExcludeStrip, toolStripFilters);

            // Input filtering...
            ToolStripLabel label = new ToolStripLabel("Filter");

            label.ForeColor = SystemColors.GrayText;
            toolStripFilters.Items.Add(new ToolStripSeparator());
            toolStripFilters.Items.Add(label);

            // Input exlude items.
            _inputExcludeStrip       = new StringsControlToolStripEx();
            _inputExcludeStrip.Label = "Exclude";
            // Data source assigned on tracer assignment.
            toolStripFilters.Items.Add(new ToolStripSeparator());
            WinFormsHelper.MoveToolStripItems(_inputExcludeStrip, toolStripFilters);
        }
示例#6
0
        /// <summary>
        /// Load state.
        /// </summary>
        /// <param name="state"></param>
        public void LoadState(SerializationInfoEx state)
        {
            if (state.ContainsValue("_stringFilter"))
            {
                StringTracerFilter stringFilter = state.GetValue <StringTracerFilter>("_stringFilter");
                if (_stringFilter != null)
                {
                    _stringFilter.CopyDataFrom(stringFilter);
                }
            }

            if (state.ContainsValue("_stringInputFilter"))
            {
                StringTracerFilter stringInputFilter = state.GetValue <StringTracerFilter>("_stringInputFilter");
                if (_stringInputFilter != null)
                {
                    _stringInputFilter.CopyDataFrom(stringInputFilter);
                }
            }

            WinFormsHelper.DirectOrManagedInvoke(this, UpdateFiltersUI);
        }
 void Variables_VariablesUpdatedEvent(SystemVariables variables)
 {
     WinFormsHelper.BeginManagedInvoke(this, UpdateUI);
 }
示例#8
0
 /// <summary>
 /// Possible NON UI thread.
 /// </summary>
 void _filter_FilterUpdatedEvent(TracerFilter filter)
 {
     WinFormsHelper.BeginManagedInvoke(this, new GeneralHelper.DefaultDelegate(UpdateUI));
 }
示例#9
0
 /// <summary>
 ///
 /// </summary>
 public void UpdateUI()
 {
     WinFormsHelper.DirectOrManagedInvoke(this, DoUpdateUI);
 }
示例#10
0
 void _itemSink_FilterUpdateEvent(TracerItemSink tracer)
 {
     WinFormsHelper.BeginFilteredManagedInvoke(this, DoUpdateUI);
 }
示例#11
0
 void _manager_SourceAddedEvent(NewsManager manager, EventSource source)
 {
     WinFormsHelper.BeginManagedInvoke(this, UpdateUI);
 }
示例#12
0
 void _manager_UpdatingStartedEvent(NewsManager manager)
 {// Needed for the update status icon.
     WinFormsHelper.BeginManagedInvoke(this, UpdateUI);
 }
示例#13
0
 void _manager_SourceItemsAddedEvent(NewsManager manager, EventSource source, IEnumerable <EventBase> events)
 {
     WinFormsHelper.BeginFilteredManagedInvoke(this, TimeSpan.FromSeconds(1), UpdateUI);
 }
 void _manager_UpdatingStartedEvent(NewsManager manager)
 {
     WinFormsHelper.BeginManagedInvoke(this, UpdateUI);
 }