Mercurial > pub > ImplabNet
comparison Implab/Parallels/AsyncPool.cs @ 11:6ec82bf68c8e promises
refactoring
| author | cin |
|---|---|
| date | Tue, 05 Nov 2013 01:09:58 +0400 |
| parents | |
| children | e943453e5039 |
comparison
equal
deleted
inserted
replaced
| 10:aa33d0bb8c0c | 11:6ec82bf68c8e |
|---|---|
| 1 using System; | |
| 2 using System.Threading; | |
| 3 | |
| 4 namespace Implab.Parallels { | |
| 5 /// <summary> | |
| 6 /// Класс для распаралеливания задач. | |
| 7 /// </summary> | |
| 8 /// <remarks> | |
| 9 /// Используя данный класс и лямда выражения можно распараллелить | |
| 10 /// вычисления, для этого используется концепция обещаний. | |
| 11 /// </remarks> | |
| 12 public static class AsyncPool { | |
| 13 | |
| 14 public static Promise<T> Invoke<T>(Func<T> func) { | |
| 15 var p = new Promise<T>(); | |
| 16 | |
| 17 ThreadPool.QueueUserWorkItem(param => { | |
| 18 try { | |
| 19 p.Resolve(func()); | |
| 20 } catch(Exception e) { | |
| 21 p.Reject(e); | |
| 22 } | |
| 23 }); | |
| 24 | |
| 25 return p; | |
| 26 } | |
| 27 } | |
| 28 } |
