using System; using System.Collections.Generic; using System.Text; using System.Threading; using System.Threading.Tasks; namespace WCS.Data { public class ThreadHelper { //static CancellationTokenSource _cancelSource01 = new CancellationTokenSource(); //static CancellationTokenSource _cancelSource02 = new CancellationTokenSource(); public static void TaskThread(Action methodName, int millisecondsTimeout = 0) { var task = Task.Factory.StartNew(() => { methodName(); }); if (millisecondsTimeout > 0) { task.Wait(millisecondsTimeout); } } public static void TaskThread(Action methodName, T param, int millisecondsTimeout = 0) { var task = Task.Factory.StartNew(() => { methodName(param); }); if (millisecondsTimeout > 0) { task.Wait(millisecondsTimeout); } } public static object TaskThread(Func methodName) { var result = Task.Factory.StartNew(() => { return methodName(); }); return result; } public static V TaskThread(Func methodName, T param, int millisecondsTimeout = 0) { var result = Task.Factory.StartNew(() => { return methodName(param); }); if (millisecondsTimeout > 0) { if (result.Wait(millisecondsTimeout)) { return result.Result; } } return default(V); } } }