首页 > 代码库 > Tasks in parallel
Tasks in parallel
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using System.Threading.Tasks;using System.Threading;using System.IO;using Microsoft.SqlServer.Dts.Runtime;struct Response { public bool DTSResult { get; set; } public string Message { get; set; } }public partial class Default3 : System.Web.UI.Page{ protected void Page_Load(object sender, EventArgs e) { } Response ExecuteWorkA() { bool flagA = false; try { //Thread.Sleep(16000); string pkgLocation; Package pkg; Application app; DTSExecResult pkgResults; pkgLocation = @"C:\Users\xxxxxxxxxx\Documents\Visual Studio 2008\projects\Integration Services Project1\Integration Services Project1\Package.dtsx"; app = new Application(); pkg = app.LoadPackage(pkgLocation, null); pkgResults = pkg.Execute(); flagA = pkgResults == DTSExecResult.Success; //throw new Exception("err"); } catch (Exception ex) { flagA = false; } return new Response { DTSResult = flagA }; } Response ExecuteWorkB() { bool flagB = false; try { Thread.Sleep(14000); flagB = true; //throw new Exception("error"); } catch (Exception ex) { flagB = false; } return new Response { DTSResult = flagB }; } Response ExecuteWorkC() { bool flagC = false; Thread.Sleep(17000); flagC = true; return new Response { DTSResult = flagC}; } protected void Button1_Click(object sender, EventArgs e) { List<Func<Response>> lst = new List<Func<Response>>(); lst.Add(ExecuteWorkA); lst.Add(ExecuteWorkB); lst.Add(ExecuteWorkC); List<Response> result = new List<Response>(); Action act = () => { Parallel.ForEach(lst, (func) => { result.Add(func()); }); bool isFailed = false; foreach (Response item in result) { if (!item.DTSResult) { isFailed = true; break; } } if(result.Count > 0 ) File.AppendAllText(@"D:\Temp\log.txt", string.Format("{0} {1} ", DateTime.Now, isFailed ? "Failed!" : "Suceed!")); }; act.BeginInvoke(null, null); //for better, have callback method... }}
Tasks in parallel
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。