Fixes #4046 - Moves examples into ./Examples and fixes ./Tests (#4047)

* touching publish.yml

* Moved Examples into ./Examples

* Moved Benchmarks into ./Tests

* Moved Benchmarks into ./Tests

* Moved UICatalog into ./Examples

* Moved UICatalog into ./Examples 2

* Moved tests into ./Tests

* Updated nuget
This commit is contained in:
Tig
2025-04-25 09:49:33 -06:00
committed by GitHub
parent dca3923491
commit 0baa881dc5
199 changed files with 149 additions and 142 deletions

View File

@@ -0,0 +1,60 @@
using System;
using System.Reactive.Concurrency;
using System.Reactive.Disposables;
using Terminal.Gui;
namespace ReactiveExample;
public class TerminalScheduler : LocalScheduler
{
public static readonly TerminalScheduler Default = new ();
private TerminalScheduler () { }
public override IDisposable Schedule<TState> (
TState state,
TimeSpan dueTime,
Func<IScheduler, TState, IDisposable> action
)
{
IDisposable PostOnMainLoop ()
{
var composite = new CompositeDisposable (2);
var cancellation = new CancellationDisposable ();
Application.Invoke (
() =>
{
if (!cancellation.Token.IsCancellationRequested)
{
composite.Add (action (this, state));
}
}
);
composite.Add (cancellation);
return composite;
}
IDisposable PostOnMainLoopAsTimeout ()
{
var composite = new CompositeDisposable (2);
object timeout = Application.AddTimeout (
dueTime,
() =>
{
composite.Add (action (this, state));
return false;
}
);
composite.Add (Disposable.Create (() => Application.RemoveTimeout (timeout)));
return composite;
}
return dueTime == TimeSpan.Zero
? PostOnMainLoop ()
: PostOnMainLoopAsTimeout ();
}
}