more more

This commit is contained in:
Yoshifumi Kawai
2020-04-20 08:35:06 +09:00
parent fbec6e9a58
commit 082f3e7335
21 changed files with 425 additions and 749 deletions

View File

@@ -12,24 +12,6 @@ namespace UniRx.Async
{
public static partial class UniTaskExtensions
{
/// <summary>
/// Convert UniTask -> UniTask[AsyncUnit].
/// </summary>
public static UniTask<AsyncUnit> AsAsyncUnitUniTask(this UniTask task)
{
// use implicit conversion
return task;
}
/// <summary>
/// Convert UniTask[T] -> UniTask.
/// </summary>
public static UniTask AsUniTask<T>(this UniTask<T> task)
{
// use implicit conversion
return task;
}
/// <summary>
/// Convert Task[T] -> UniTask[T].
/// </summary>
@@ -112,17 +94,20 @@ namespace UniRx.Async
awaiter.SourceOnCompleted(state =>
{
var (inTcs, inAwaiter) = ((TaskCompletionSource<T>, UniTask<T>.Awaiter))state;
try
using (var tuple = (StateTuple<TaskCompletionSource<T>, UniTask<T>.Awaiter>)state)
{
var result = inAwaiter.GetResult();
inTcs.SetResult(result);
var (inTcs, inAwaiter) = tuple;
try
{
var result = inAwaiter.GetResult();
inTcs.SetResult(result);
}
catch (Exception ex)
{
inTcs.SetException(ex);
}
}
catch (Exception ex)
{
inTcs.SetException(ex);
}
}, (tcs, awaiter));
}, StateTuple.Create(tcs, awaiter));
return tcs.Task;
}
@@ -154,17 +139,20 @@ namespace UniRx.Async
awaiter.SourceOnCompleted(state =>
{
var (inTcs, inAwaiter) = ((TaskCompletionSource<object>, UniTask.Awaiter))state;
try
using (var tuple = (StateTuple<TaskCompletionSource<object>, UniTask.Awaiter>)state)
{
inAwaiter.GetResult();
inTcs.SetResult(null);
var (inTcs, inAwaiter) = tuple;
try
{
inAwaiter.GetResult();
inTcs.SetResult(null);
}
catch (Exception ex)
{
inTcs.SetException(ex);
}
}
catch (Exception ex)
{
inTcs.SetException(ex);
}
}, (tcs, awaiter));
}, StateTuple.Create(tcs, awaiter));
return tcs.Task;
}
@@ -196,7 +184,7 @@ namespace UniRx.Async
// left, right both suppress operation canceled exception.
var delayCancellationTokenSource = new CancellationTokenSource();
var timeoutTask = (UniTask)UniTask.Delay(timeout, ignoreTimeScale, timeoutCheckTiming).SuppressCancellationThrow();
var timeoutTask = UniTask.Delay(timeout, ignoreTimeScale, timeoutCheckTiming).SuppressCancellationThrow();
var (hasValue, value) = await UniTask.WhenAny(task.SuppressCancellationThrow(), timeoutTask);
@@ -242,7 +230,7 @@ namespace UniRx.Async
// left, right both suppress operation canceled exception.
var delayCancellationTokenSource = new CancellationTokenSource();
var timeoutTask = (UniTask)UniTask.Delay(timeout, ignoreTimeScale, timeoutCheckTiming).SuppressCancellationThrow();
var timeoutTask = UniTask.Delay(timeout, ignoreTimeScale, timeoutCheckTiming).SuppressCancellationThrow();
var (hasValue, value) = await UniTask.WhenAny(task.SuppressCancellationThrow(), timeoutTask);