多线程的列子一般这样的
public class AccessControl()
{
private static object privateObjectLock = new object();
private string dbname,tablename; //参数:文件名
public AccessControl(string dbname,string tablename)
{
this.filename = filename;
}
public static AccessResult()
{
lock(privateObjectLock)
{
//数据库操作语句 }
}
}
如果我在调用的时候new多个AccessControl类的实例(因为参数不同), lock(privateObjectLock)还能起到效果吗?比如
for (int i=0;i<=100;i++)
{
AccessControl ac = new AccessControl(dbName,table[i]);
Thread t = new Thread(new ThreadStart(ac .AccessResult));
t.start();
}
public class AccessControl()
{
private static object privateObjectLock = new object();
private string dbname,tablename; //参数:文件名
public AccessControl(string dbname,string tablename)
{
this.filename = filename;
}
public static AccessResult()
{
lock(privateObjectLock)
{
//数据库操作语句 }
}
}
如果我在调用的时候new多个AccessControl类的实例(因为参数不同), lock(privateObjectLock)还能起到效果吗?比如
for (int i=0;i<=100;i++)
{
AccessControl ac = new AccessControl(dbName,table[i]);
Thread t = new Thread(new ThreadStart(ac .AccessResult));
t.start();
}
解决方案 »
- WPF如何动态修改程序显示内容
- 强类型Data使用教程有吗?100分
- 新人求助
- ●取第一块硬盘物理序列号时出错!!●
- C#程序里怎样写EXCEL。(其中包括控制EXCEL单元格的大小,及合并单元格,最难的是怎样设置条形码)
- c#运行flash游戏的问题
- 数据库中的状态值在C#程序中的对应
- datagrid 怎么做类似 excel标题自动筛选功能
- C#:listBox中如和改变配选中字体的颜色!
- 一个非常紧急的问题,请C#和xml高手帮忙,在线等待!!!!!!
- 求助! 运行出错:此上下文中不支持此代码块.
- 请问一下,这种构造对象的方法是什么意思[new ClassName { Propery1 = ...}
这句给每一个新建的线程新建了一个对象 而每次这个对象 只对当前线程有效! 所以你那样写是没
有意义的! 除非把AccessControl ac = new AccessControl(dbName,table[i]);
这句放在循环外面! 那么他们lock的都是同一个privateObjectLock对象了!