Files
MikaltoResort/ManagementApp/AServices/ThreadManage/ConcurrentDictionaryThread.cs
2025-06-04 12:59:27 +07:00

59 lines
2.0 KiB
C#

using Microsoft.AspNetCore.DataProtection.KeyManagement;
using Newtonsoft.Json.Linq;
using System.Collections.Concurrent;
namespace ManagementApp.AServices.ThreadManage
{
public class ConcurrentDictionaryThread<T>: IConcurrentTasks<T>, IConcurrentTasks
{
private readonly ConcurrentDictionary<T, Func<CancellationToken, ValueTask>> listTask;
public ConcurrentDictionaryThread() {
this.listTask = new ConcurrentDictionary<T, Func<CancellationToken, ValueTask>> ();
}
public async ValueTask Add(Func<CancellationToken, ValueTask> value)
{
throw new NotImplementedException();
}
public async ValueTask<bool> Add(T key, Func<CancellationToken, ValueTask> value)
{
return await Task<bool>.Run(() => {
return listTask.TryAdd(key, value);
}) ;
}
public async ValueTask<Func<CancellationToken, ValueTask>> Last(CancellationToken cancellationToken)
{
return await Task<Func<CancellationToken, ValueTask>>.Run(() => {
var d = listTask.Last();
listTask.TryRemove(d);
return d.Value;
});
}
public async ValueTask<Func<CancellationToken, ValueTask>> First(CancellationToken cancellationToken)
{
return await Task<Func<CancellationToken, ValueTask>>.Run(() => {
var d = listTask.First();
listTask.TryRemove(d);
return d.Value;
});
}
public async ValueTask<Func<CancellationToken, ValueTask>> Search(T key, CancellationToken cancellationToken)
{
throw new NotImplementedException();
}
public async ValueTask<Func<CancellationToken, ValueTask>> Update(T key, CancellationToken cancellationToken, Func<CancellationToken, ValueTask> value)
{
throw new NotImplementedException();
}
}
}