namespace Microsoft.Xna.Framework.Net
{
///
/// Wrapper for async operations to provide XNA-compatible IAsyncResult interface.
///
internal class AsyncResultWrapper : IAsyncResult
{
private readonly Task task;
private readonly object asyncState;
public AsyncResultWrapper(Task task, AsyncCallback callback, object asyncState)
{
this.task = task;
this.asyncState = asyncState;
if (callback != null)
{
task.ContinueWith(t => callback(this));
}
}
public object AsyncState => asyncState;
public System.Threading.WaitHandle AsyncWaitHandle => ((IAsyncResult)task).AsyncWaitHandle;
public bool CompletedSynchronously => task.IsCompletedSuccessfully;
public bool IsCompleted => task.IsCompleted;
public T GetResult()
{
return task.Result;
}
}
}