TaskExecutor.cs 684 B

1234567891011121314151617181920212223242526272829
  1. using CommonLang.Concurrent;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. namespace ZeusServerNode
  8. {
  9. public class SingleThreadTaskExecutor : IDisposable
  10. {
  11. private SingleThreadExecutor executor = new SingleThreadExecutor();
  12. public void Dispose()
  13. {
  14. executor.Shutdown();
  15. }
  16. public Task<TResult> Run<TResult>(Func<TResult> function)
  17. {
  18. Task<TResult> ret = new Task<TResult>(function);
  19. executor.Execute(() =>
  20. {
  21. ret.RunSynchronously();
  22. });
  23. return ret;
  24. }
  25. }
  26. }