view Implab/AsyncPool.cs @ 1:6fb3b01ee971

Added utility class for safe disposing methods. Added event fireing while promise is cancelled (needs some more work)
author cin
date Tue, 27 Aug 2013 08:28:42 +0400
parents 279591fb4df3
children
line wrap: on
line source

using System;
using System.Threading;

namespace Implab {
	/// <summary>
	/// Класс для распаралеливания задач.
	/// </summary>
	/// <remarks>
	/// Используя данный класс и лямда выражения можно распараллелить
	/// вычисления, для этого используется концепция обещаний.
	/// </remarks>
	public static class AsyncPool {

		public static Promise<T> Invoke<T>(Func<T> func) {
			var p = new Promise<T>();

			ThreadPool.QueueUserWorkItem(param => {
				try {
					p.Resolve(func());
				} catch(Exception e) {
					p.Reject(e);
				}
			});

			return p;
		}
	}
}