Class MainLoop
Simple main loop implementation that can be used to monitor
file descriptor, run timers and idle handlers.
Inheritance
System.Object
MainLoop
Remarks
Monitoring of file descriptors is only available on Unix, there
does not seem to be a way of supporting this on Windows.
Namespace: Terminal.Gui
Assembly: Terminal.Gui.dll
Syntax
public class MainLoop : Object
Constructors
MainLoop(IMainLoopDriver)
Creates a new Mainloop.
Declaration
public MainLoop(IMainLoopDriver driver)
Parameters
Type | Name | Description |
---|---|---|
IMainLoopDriver | driver | Should match the ConsoleDriver (one of the implementations UnixMainLoop, NetMainLoop or WindowsMainLoop). |
Properties
Driver
The current IMainLoopDriver in use.
Declaration
public IMainLoopDriver Driver { get; }
Property Value
Type | Description |
---|---|
IMainLoopDriver | The driver. |
IdleHandlers
Gets the list of all idle handlers.
Declaration
public List<Func<bool>> IdleHandlers { get; }
Property Value
Type | Description |
---|---|
System.Collections.Generic.List<System.Func<System.Boolean>> |
Timeouts
Gets the list of all timeouts sorted by the System.TimeSpan time ticks./>.
A shorter limit time can be added at the end, but it will be called before an
earlier addition that has a longer limit time.
Declaration
public SortedList<long, MainLoop.Timeout> Timeouts { get; }
Property Value
Type | Description |
---|---|
System.Collections.Generic.SortedList<System.Int64, MainLoop.Timeout> |
Methods
AddIdle(Func<Boolean>)
Adds specified idle handler function to mainloop processing. The handler function will be called once per iteration of the main loop after other events have been handled.
Declaration
public Func<bool> AddIdle(Func<bool> idleHandler)
Parameters
Type | Name | Description |
---|---|---|
System.Func<System.Boolean> | idleHandler | Token that can be used to remove the idle handler with RemoveIdle(Func<Boolean>) . |
Returns
Type | Description |
---|---|
System.Func<System.Boolean> |
AddTimeout(TimeSpan, Func<MainLoop, Boolean>)
Adds a timeout to the mainloop.
Declaration
public object AddTimeout(TimeSpan time, Func<MainLoop, bool> callback)
Parameters
Type | Name | Description |
---|---|---|
System.TimeSpan | time | |
System.Func<MainLoop, System.Boolean> | callback |
Returns
Type | Description |
---|---|
System.Object |
EventsPending(Boolean)
Determines whether there are pending events to be processed.
Declaration
public bool EventsPending(bool wait = false)
Parameters
Type | Name | Description |
---|---|---|
System.Boolean | wait |
Returns
Type | Description |
---|---|
System.Boolean |
Invoke(Action)
Runs
action
on the thread that is processing events
Declaration
public void Invoke(Action action)
Parameters
Type | Name | Description |
---|---|---|
System.Action | action | the action to be invoked on the main processing thread. |
MainIteration()
Runs one iteration of timers and file watches
Declaration
public void MainIteration()
RemoveIdle(Func<Boolean>)
Removes an idle handler added with AddIdle(Func<Boolean>) from processing.
Declaration
public bool RemoveIdle(Func<bool> token)
Parameters
Type | Name | Description |
---|---|---|
System.Func<System.Boolean> | token | A token returned by AddIdle(Func<Boolean>) |
Returns
Type | Description |
---|---|
System.Boolean |
RemoveTimeout(Object)
Removes a previously scheduled timeout
Declaration
public bool RemoveTimeout(object token)
Parameters
Type | Name | Description |
---|---|---|
System.Object | token |
Returns
Type | Description |
---|---|
System.Boolean |
Run()
Runs the mainloop.
Declaration
public void Run()
Stop()
Stops the mainloop.
Declaration
public void Stop()
Events
TimeoutAdded
Invoked when a new timeout is added to be used on the case
if ExitRunLoopAfterFirstIteration is true,
Declaration
public event Action<long> TimeoutAdded
Event Type
Type | Description |
---|---|
System.Action<System.Int64> |