• 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:UsersxxxxxxxxxxDocumentsVisual Studio 2008projectsIntegration Services Project1Integration Services Project1Package.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:Templog.txt", string.Format("{0} {1} ", DateTime.Now, isFailed ? "Failed!" : "Suceed!"));
    
                };
    
            act.BeginInvoke(null, null); //for better, have callback method...
    
        }
    }
    
  • 相关阅读:
    笔试题 输出金字塔 面试经典
    C++ 函数, 虚函数, 纯虚函数
    EJB 根据beanName引用EJB
    【J2EE性能分析篇】JVM参数对J2EE性能优化的影响【转】
    C++ 引用和指针作为函数参数的例子。请不要拍砖
    lucene 总结
    二维数组按列序号排序 面试经典
    http://www.linuxidc.com/Linux/201004/25494.htm
    银行取款费用
    PHP 生成 csv 文件时乱码解决
  • 原文地址:https://www.cnblogs.com/silva/p/3871127.html
Copyright © 2020-2023  润新知