AwaitDataWrap.cs 909 B

12345678910111213141516171819202122232425262728293031323334
  1. using System.Threading.Tasks;
  2. using GameFramework;
  3. namespace UGFExtensions.Await
  4. {
  5. /// <summary>
  6. /// Await包装类
  7. /// </summary>
  8. public class AwaitDataWrap<T> : IReference
  9. {
  10. /// <summary>
  11. /// 自定义数据
  12. /// </summary>
  13. public object UserData { get; private set; }
  14. /// <summary>
  15. /// TaskCompletionSource
  16. /// </summary>
  17. public TaskCompletionSource<T> Source { get; private set; }
  18. public static AwaitDataWrap<T> Create(object userData, TaskCompletionSource<T> source)
  19. {
  20. AwaitDataWrap<T> awaitDataWrap = ReferencePool.Acquire<AwaitDataWrap<T>>();
  21. awaitDataWrap.UserData = userData;
  22. awaitDataWrap.Source = source;
  23. return awaitDataWrap;
  24. }
  25. public void Clear()
  26. {
  27. UserData = null;
  28. Source = null;
  29. }
  30. }
  31. }