mirror of
https://github.com/gui-cs/Terminal.Gui.git
synced 2025-12-30 09:47:58 +01:00
Correct the scheduler
This commit is contained in:
@@ -23,19 +23,22 @@ namespace ReactiveExample {
|
||||
return composite;
|
||||
}
|
||||
|
||||
IDisposable PostAsTimeout () {
|
||||
var composite = new CompositeDisposable(2);
|
||||
var token = Application.MainLoop.AddTimeout (dueTime, args => {
|
||||
IDisposable PostOnMainLoopAsTimeout () {
|
||||
object timeout = null;
|
||||
var composite = new CompositeDisposable (2) {
|
||||
Disposable.Create (() => Application.MainLoop.RemoveTimeout (timeout))
|
||||
};
|
||||
timeout = Application.MainLoop.AddTimeout (dueTime, args => {
|
||||
composite.Add(action (this, state));
|
||||
Application.MainLoop.RemoveTimeout (timeout);
|
||||
return true;
|
||||
});
|
||||
composite.Add (Disposable.Create (() => Application.MainLoop.RemoveTimeout (token)));
|
||||
return composite;
|
||||
}
|
||||
|
||||
return dueTime == TimeSpan.Zero
|
||||
? PostOnMainLoop ()
|
||||
: PostAsTimeout ();
|
||||
: PostOnMainLoopAsTimeout ();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user