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 } |