private static System.Windows.Forms.ListView _listView1;
public static System.Windows.Forms.ListView listView1
{
get
{
return _listView1;
}
set
{
_listView1 = value;
}
}
public static void StartThread(int t)
{
ParameterizedThreadStart myDelegate = new ParameterizedThreadStart(main);
Thread dd = new Thread(myDelegate);
dd.IsBackground = true;
dd.Start(t);
}
public static void main(object o)
{int t=int.Parse(o);
for(int i=t;i<t+10;i++){
listView1.Items[0].SubItems[0].Text = i.ToString();
System.Threading.Thread.Sleep(1000);
}
} 多线程调用StartThread时给listView赋值会发送串位,比如listView1 本来应该是1~9 ;listView2应该是10~19;
可如果同时执行StartThread(0);StartThread(10);listView1里面就不见得是1~9了,可能后面的那个函数StartThread(10)赋值给了listView1 。请问这个如何解决亚?请贴代码,谢谢
public static System.Windows.Forms.ListView listView1
{
get
{
return _listView1;
}
set
{
_listView1 = value;
}
}
public static void StartThread(int t)
{
ParameterizedThreadStart myDelegate = new ParameterizedThreadStart(main);
Thread dd = new Thread(myDelegate);
dd.IsBackground = true;
dd.Start(t);
}
public static void main(object o)
{int t=int.Parse(o);
for(int i=t;i<t+10;i++){
listView1.Items[0].SubItems[0].Text = i.ToString();
System.Threading.Thread.Sleep(1000);
}
} 多线程调用StartThread时给listView赋值会发送串位,比如listView1 本来应该是1~9 ;listView2应该是10~19;
可如果同时执行StartThread(0);StartThread(10);listView1里面就不见得是1~9了,可能后面的那个函数StartThread(10)赋值给了listView1 。请问这个如何解决亚?请贴代码,谢谢
你应该是传入的参数哪里不正确。
lock(obj)
{
listView1.Items[0].SubItems[0].Text = i.ToString();
}
在线程的执行函数中:
lock(listView)
{
for(int ....)
}
listview是作为线程的参数传递的