项目里线程池的用法

public void GenerateData(string dbFullName)
        {
            bool bSuccess = true;

            if (File.Exists(dbFullName))
            {
                File.Delete(dbFullName);
            }

            System.Data.SQLite.SQLiteConnection.CreateFile(dbFullName);
            if (File.Exists(dbFullName))
            {
                SQLiteHelper.connectionString = SQLiteHelper.GetConn(dbFullName);

                bSuccess = SQLiteHelper.InitGenerateDB(new string[] { 
                    CommonGenerateData.CreateBuildingType, 
                    CommonGenerateData.CreateLocationBasicInfo, 
                    CommonGenerateData.CreateLocationOtherInfo, 
                    CommonGenerateData.CreateEleLocation, 
                    CommonGenerateData.CreateEleLocationPct, 
                    CommonGenerateData.CreateLocationAttach, 
                    CommonGenerateData.CreateElection });

                using (SQLiteConnection sqliteConn = new SQLiteConnection(SQLiteHelper.connectionString))
                {
                    sqliteConn.Open();
                    List<Action<SQLiteTransaction>> delegetlist = new List<Action<SQLiteTransaction>>() { 
                        CommonGenerateData.GenerateBuildingType, 
                        CommonGenerateData.GenerateLocationBasicInfo,
                        CommonGenerateData.GenerateLocationOtherInfo,
                        CommonGenerateData.GenerateEleLocation,
                        CommonGenerateData.GenerateEleLocationPct,
                        CommonGenerateData.GenerateLocationAttach,
                        CommonGenerateData.GenerateElection
                    };

                    WaitHandle[] waitHandles = new WaitHandle[]{
                        new AutoResetEvent(false),
                        new AutoResetEvent(false),
                        new AutoResetEvent(false),
                        new AutoResetEvent(false),
                        new AutoResetEvent(false),
                        new AutoResetEvent(false),
                        new AutoResetEvent(false)
                    };

                    using (SQLiteTransaction tran = sqliteConn.BeginTransaction())
                    {
                        for (int i = 0; i < delegetlist.Count; i++)
                        {
                            Action<SQLiteTransaction> deleget = delegetlist[i];
                            AutoResetEvent resetEvent = (AutoResetEvent)waitHandles[i];
                            ThreadPool.QueueUserWorkItem(stateInfo => {
                                deleget(tran);
                                resetEvent.Set();
                            }, waitHandles[i]);
                        }
                        WaitHandle.WaitAll(waitHandles);
                        tran.Commit();
                    }
                    sqliteConn.Close();
                }
            }
        }

 

转载于:https://www.cnblogs.com/405464904/p/4290743.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值