Я пытаюсь получить доступ к ListBox из двух потоков. Я использую два оператора блокировки, но это не работает.Доступ к нескольким потокам к переменной
Мой код:
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 to static или использовать класс Monitor, но я все равно получаю эту ошибку
Почему downvote? Я сказал что-то не то? –
Спасибо, я попробую (я не нажал downvote) – user3428180