Here are the examples of the csharp api System.Threading.Tasks.TaskCompletionSource.TrySetResult(T2) taken from open source projects. By voting up you can indicate which examples are most useful and appropriate.
1 Examples
19
Source : TaskUtils.cs
with MIT License
from azist
with MIT License
from azist
public static Task<T2> OnOk<T1, T2>(this Task<T1> first, Func<T1, Task<T2>> next,
TaskContinuationOptions firstOptions = TaskContinuationOptions.ExecuteSynchronously,
TaskContinuationOptions nextOptions = TaskContinuationOptions.ExecuteSynchronously)
{
var tcs = new TaskCompletionSource<T2>();
first.ContinueWith( _ =>
{
if (first.IsFaulted)
tcs.TrySetException(first.Exception.InnerExceptions);
else if (first.IsCanceled)
tcs.TrySetCanceled();
else
{
try
{
var t = next(first.Result);
if (t == null)
tcs.TrySetException( new AzosException(StringConsts.CANNOT_RETURN_NULL_ERROR + typeof(TaskUtils).FullName + ".Then" ));
else
{
t.ContinueWith( __ =>
{
if (t.IsFaulted)
tcs.TrySetException(first.Exception.InnerExceptions);
else if (t.IsCanceled)
tcs.TrySetCanceled();
else
tcs.TrySetResult(t.Result);
}, nextOptions);
}
}
catch (Exception ex)
{
tcs.TrySetException(ex);
}
}
}, firstOptions);
return tcs.Task;
}