Skip to content

Class TaskQueue<T, TResult> ​

Namespace: Tool.Utils.ThreadQueue
Assembly: Tool.Net.dll

一个消息队列任务模型(异步处理任务·线程安全)

csharp
public class TaskQueue<T, TResult>

Type Parameters ​

T

传入对象

TResult

返回结果

Inheritance ​

object ← TaskQueue<T, TResult>

Inherited Members ​

object.Equals(object?), object.Equals(object?, object?), object.GetHashCode(), object.GetType(), object.MemberwiseClone(), object.ReferenceEquals(object?, object?), object.ToString()

Extension Methods ​

ObjectExtension.Add<T>(object, object, object), ObjectExtension.CopyEntity(object, object, params string[]), ObjectExtension.EntityToJson(object), ObjectExtension.EntityToJson(object, bool), ObjectExtension.EntityToJson(object, bool, string), DictionaryExtension.GetDictionary(object), TypeExtension.GetFieldKey(object, string, out bool), TypeExtension.GetFieldKey<T>(object, string, out bool), TypeExtension.GetFieldKey(object, Type, string, out bool), ObjectExtension.GetIntPtr(object), ObjectExtension.GetIntPtrInt(object), TypeExtension.GetPropertieFind(object, string, bool), TypeExtension.GetProperties(object), TypeExtension.GetPropertyKey(object, string, out bool), TypeExtension.GetPropertyKey<T>(object, string, out bool), TypeExtension.GetPropertyKey(object, Type, string, out bool), TypeExtension.GetValue(object, PropertyDescriptor), TypeExtension.GetValue(object, string, bool), TypeExtension.GetValue(object, string), ObjectExtension.Read<T>(object, object, int, int), ObjectExtension.Read<T>(object, int, object, int, int), DictionaryExtension.SetDictionary(object, IDictionary<string, object>), TypeExtension.SetFieldKey(object, string, object), TypeExtension.SetFieldKey<T>(object, string, object), TypeExtension.SetFieldKey(object, Type, string, object), TypeExtension.SetPropertyKey(object, string, object), TypeExtension.SetPropertyKey<T>(object, string, object), TypeExtension.SetPropertyKey(object, Type, string, object), TypeExtension.SetValue(object, PropertyDescriptor, object), TypeExtension.SetValue(object, string, object, bool), TypeExtension.SetValue(object, string, object), ObjectExtension.ToBase64String(object), ObjectExtension.ToBytes(object), ObjectExtension.ToBytes(object, out Type), DictionaryExtension.ToDictionary(object), DictionaryExtension.ToDictionary<T>(object), DictionaryExtension.ToIDictionary(object), DictionaryExtension.ToIDictionary<T>(object), ObjectExtension.ToJson(object), ObjectExtension.ToJson(object, JsonSerializerOptions), ObjectExtension.ToJsonWeb(object), ObjectExtension.ToJsonWeb(object, Action<JsonSerializerOptions>), ObjectExtension.ToTryVar<T>(object, T), ObjectExtension.ToVar<T>(object), ObjectExtension.ToVar(object, Type, bool), ObjectExtension.ToVar(object, string), ObjectExtension.ToXml(object)

Remarks ​

代码由逆血提供支持

Constructors ​

TaskQueue(Func<T, ValueTask<TResult>>) ​

创建执行需要的函数

csharp
public TaskQueue(Func<T, ValueTask<TResult>> func)

Parameters ​

func Func<T, ValueTask<TResult>>

队列处理的函数

TaskQueue(Func<T, ValueTask<TResult>>, TaskCreationOptions) ​

创建执行需要的函数

csharp
public TaskQueue(Func<T, ValueTask<TResult>> func, TaskCreationOptions creationOptions)

Parameters ​

func Func<T, ValueTask<TResult>>

队列处理的函数

creationOptions TaskCreationOptions

异步线程属性

Fields ​

WaitTimeout ​

分配的任务队列线程完成后最大保留时间

csharp
public const int WaitTimeout = 60000

Field Value ​

int

Properties ​

CompleteCount ​

累计已完成的任务数

csharp
public ulong CompleteCount { get; }

Property Value ​

ulong

Count ​

当前活动的任务数

csharp
public int Count { get; }

Property Value ​

int

IsContinueWith ​

表示当前事件是否已经注册

csharp
public bool IsContinueWith { get; }

Property Value ​

bool

TotalCount ​

累计已有的任务数

csharp
public ulong TotalCount { get; }

Property Value ​

ulong

Methods ​

Add(T) ​

添加一个新的任务(他会排队一个一个完成)

csharp
public void Add(T state)

Parameters ​

state T

任务需要的参数

ContinueWith ​

注册完成任务后触发的事件

csharp
public event Action<T, TResult, Exception> ContinueWith

Event Type ​

Action<T, TResult, Exception>

基于Apache-2.0协议开源