Show / Hide Table of Contents

# Class SingleThreadTaskScheduler

A single-threaded task scheduler that runs all of its tasks on the same thread.

##### Inheritance

Object
TaskScheduler
SingleThreadTaskScheduler

##### Implements

IDisposable

##### Inherited Members

TaskScheduler.TryDequeue(Task)
TaskScheduler.FromCurrentSynchronizationContext()
TaskScheduler.TryExecuteTask(Task)
TaskScheduler.MaximumConcurrencyLevel
TaskScheduler.Default
TaskScheduler.Current
TaskScheduler.Id
TaskScheduler.UnobservedTaskException
Object.ToString()
Object.Equals(Object)
Object.Equals(Object, Object)
Object.ReferenceEquals(Object, Object)
Object.GetHashCode()
Object.GetType()
Object.MemberwiseClone()

###### Namespace: IPA.Utilities.Async

###### Assembly: IPA.Loader.dll

##### Syntax

    public class SingleThreadTaskScheduler : TaskScheduler, IDisposable

### Properties

| Improve this Doc View Source

#### IsRunning

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 Source

#### Dispose()

Disposes this object. This puts the object into an unusable state.

##### Declaration

    public void Dispose()

| Improve this Doc View Source

#### 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

| Improve this Doc View Source

#### 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.

| Improve this Doc View Source

#### GetScheduledTasks()

Throws a NotSupportedException.

##### Declaration

    protected override IEnumerable<Task> GetScheduledTasks()

##### Returns

Type | Description
--- | ---
IEnumerable<Task> | nothing

##### Overrides

TaskScheduler.GetScheduledTasks()

##### Exceptions

Type | Condition
--- | ---
NotSupportedException | Always.

| Improve this Doc View Source

#### 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.

| Improve this Doc View Source

#### 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

TaskScheduler.QueueTask(Task)

##### Exceptions

Type | Condition
--- | ---
ObjectDisposedException | Thrown if this object has already been disposed.

| Improve this Doc View Source

#### 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.

| Improve this Doc View Source

#### 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

TaskScheduler.TryExecuteTaskInline(Task, Boolean)

##### 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.

### Implements

System.IDisposable

### Extension Methods

ReflectionUtil.SetField<T, U>(T, String, U)
ReflectionUtil.GetField<U, T>(T, String)
ReflectionUtil.SetProperty<T, U>(T, String, U)
ReflectionUtil.GetProperty<U, T>(T, String)
ReflectionUtil.InvokeMethod<U, T>(T, String, Object[])