Class SingleThreadTaskScheduler
A single-threaded task scheduler that runs all of its tasks on the same thread.
Implements
Inherited Members
Namespace: IPA.Utilities.Async
Assembly: IPA.Loader.dll
Syntax
public class SingleThreadTaskScheduler : TaskScheduler, IDisposable
Properties
| Improve this Doc View SourceIsRunning
Gets whether or not the underlying thread has been started.
Declaration
public bool IsRunning { get; }
Property Value
| Type | Description |
|---|---|
| Boolean |
Exceptions
| Type | Condition |
|---|---|
| ObjectDisposedException | Thrown if this object has already been disposed. |
Methods
| Improve this Doc View SourceDispose()
Disposes this object. This puts the object into an unusable state.
Declaration
public void Dispose()
Dispose(Boolean)
Disposes this object.
Declaration
protected virtual void Dispose(bool disposing)
Parameters
| Type | Name | Description |
|---|---|---|
| Boolean | disposing | whether or not to dispose managed objects |
Exit()
Terminates the runner thread, and waits for the currently running task to complete.
Declaration
public IEnumerable<Task> Exit()
Returns
| Type | Description |
|---|---|
| IEnumerable<Task> | an IEnumerable<T> of Tasks that did not execute |
Remarks
After this method returns, this object has been disposed and is no longer in a valid state.
Exceptions
| Type | Condition |
|---|---|
| ObjectDisposedException | Thrown if this object has already been disposed. |
GetScheduledTasks()
Throws a NotSupportedException.
Declaration
protected override IEnumerable<Task> GetScheduledTasks()
Returns
| Type | Description |
|---|---|
| IEnumerable<Task> | nothing |
Overrides
Exceptions
| Type | Condition |
|---|---|
| NotSupportedException | Always. |
Join()
Waits for the runner thread to complete all tasks in the queue, then exits.
Declaration
public void Join()
Remarks
After this method returns, this object has been disposed and is no longer in a valid state.
Exceptions
| Type | Condition |
|---|---|
| ObjectDisposedException | Thrown if this object has already been disposed. |
QueueTask(Task)
Queues a given Task to this scheduler. The Task must> be scheduled for this TaskScheduler by the runtime.
Declaration
protected override void QueueTask(Task task)
Parameters
| Type | Name | Description |
|---|---|---|
| Task | task | the Task to queue |
Overrides
Exceptions
| Type | Condition |
|---|---|
| ObjectDisposedException | Thrown if this object has already been disposed. |
Start()
Starts the thread that executes tasks scheduled with this TaskScheduler
Declaration
public void Start()
Exceptions
| Type | Condition |
|---|---|
| ObjectDisposedException | Thrown if this object has already been disposed. |
TryExecuteTaskInline(Task, Boolean)
Rejects any attempts to execute a task inline.
Declaration
protected override bool TryExecuteTaskInline(Task task, bool taskWasPreviouslyQueued)
Parameters
| Type | Name | Description |
|---|---|---|
| Task | task | the task to attempt to execute |
| Boolean | taskWasPreviouslyQueued | whether the task was previously queued to this scheduler |
Returns
| Type | Description |
|---|---|
| Boolean | false |
Overrides
Remarks
This task scheduler always runs its tasks on the thread that it manages, therefore it doesn't make sense to run it inline.
Exceptions
| Type | Condition |
|---|---|
| ObjectDisposedException | Thrown if this object has already been disposed. |