-1
我想从两个线程访问列表框。我正在使用两个锁定语句,但这不起作用。多线程访问变量
我的代码:
public partial class Form1 : Form
{
private List<LogInfo> logs = new List<LogInfo>();
private static Object lockObj = new Object();
private static Object lockObj0 = new Object();
/* ... */
void fileSystemWatcher_Renamed(object sender, RenamedEventArgs e)
{
try
{
ToggleWatcher(false);
LogInfo logInfo = new LogInfo(e.ChangeType, GetCurrentTime(), e.FullPath, e.OldName, e.Name);
lock (lockObj)
{
logs.Add(logInfo);
listBox1.Items.Add(logInfo.ToString());
}
}
finally
{
ToggleWatcher(true);
}
}
void fileSystemWatcher_Detect(object sender, FileSystemEventArgs e)
{
try
{
ToggleWatcher(false);
LogInfo logInfo = new LogInfo(e.ChangeType, GetCurrentTime(), e.FullPath);
lock (lockObj)
{
logs.Add(logInfo);
// Here in below line i get error: invalidoperationexception was unhandled
listBox1.Items.Add(logInfo.ToString());
}
}
finally
{
ToggleWatcher(true);
}
}
}
我不知道为什么它不工作(我有两个锁语句),但我得到的错误:InvalidOperationException异常是未处理
我试图改变lockObj静态或使用监视器类,但我仍然得到这个相同的错误
为什么downvote?我说错什么了吗? – 2014-11-23 01:06:23
谢谢,我会试试看(我没有点击downvote) – user3428180 2014-11-23 01:10:39