41 lines
1.0 KiB
C#
41 lines
1.0 KiB
C#
using SharpPromise;
|
|
using System;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace DM_Weight.util
|
|
{
|
|
public class PromiseUtil<T>
|
|
{
|
|
|
|
public int _delay { get; set; }
|
|
|
|
public T? _data { get; set; }
|
|
|
|
public async Task taskAsyncLoop(int delay, T data, Action<PromiseUtil<T>, Action, Action> action)
|
|
{
|
|
_data = data;
|
|
_delay = 0;
|
|
while (_delay >= 0)
|
|
{
|
|
await new Promise(async (Action onResolve, Action onReject) =>
|
|
{
|
|
await Task.Delay(_delay);
|
|
try
|
|
{
|
|
await Task.Run(() => action(this, onResolve, onReject));
|
|
} catch (Exception ex)
|
|
{
|
|
onReject();
|
|
}
|
|
}).Then(() =>
|
|
{
|
|
_delay = delay;
|
|
}).Catch((Exception e) =>
|
|
{
|
|
_delay = -1;
|
|
});
|
|
}
|
|
}
|
|
}
|
|
}
|