Mercurial > pub > ImplabNet
comparison Implab/AsyncPool.cs @ 0:279591fb4df3
initial commit
promises async model
author | user@factory.site.local |
---|---|
date | Fri, 23 Aug 2013 04:38:46 +0400 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:279591fb4df3 |
---|---|
1 using System; | |
2 using System.Threading; | |
3 | |
4 namespace Implab { | |
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 } |