日期:2014-05-17  浏览次数:20988 次

想用多线程去做.但是参数传不了.
var PopeNames = from p in _LinqToDB.T_UserPopes //当前用户的所有权限名称.
                        where p.FId == txtUserId.Text.Trim()
                        select p.FPopeName;

            foreach(string pName in PopeNames) { //以上是用Linq从数据库中获得的权限名称.
                foreach(Control con in gboxAuthrity.Controls) { //GroupBox中的CheckBox.
                CheckBox chebox = con as CheckBox;
                if(chebox != null && chebox.Name == pName) {
                    int nPope = chebox.Checked ? 1 : 0; //1表示有权限.
                    Thread.Sleep(100);  //抽出时间更新数据库.

                    new Thread(xxxUpdatePope) //在这里用多线程.
                }
            }
            }
        }
        void UpdatePope() { //这里要传"FId, FPopeName,FnPope"三个参数.
            _UserPope.UpdatenPopeWithIdAndPopeName()
        }

数据库图:

Winform中的权限图:

我的需求是这样的:
根据winform中 CheckBox名称(和数据库中的 FPopeName一致),和选中状态,更新数据库.
如上代码,因为我觉得是要一条一条去更新的(当然,如果去记录窗体中"权限"是否改变,也是要逐个更新数据库的).
也就是说,我要通过 "CheckBox的改变状态",去寻找数据库的"FPopeName"(权限名称) 和 "编号".所以在更新的方法中要传递3个参数.但是我想用多线程做.参数传不了...怎么办.