-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