Trzymam w listboxie pliki z pewnego folderu, chcę cyklicznie sprawdzać, czy coś nowego się w nim pojawiło. Pomyślałem o odpaleniu timera, który co minutę mi go odświeży. Niestety nie mogę tego zrobić, bo zmian nie może wykonywać na listboxie inny wątek, niż ten, który go stworzył:
Komunikat błędu: Cross-thread operation not valid: Control 'listBox1' accessed from a thread other than the thread it was created on
a oto mój kod:
System.Threading.Timer timer = new System.Threading.Timer(Callback, null, TimeSpan.Zero, TimeSpan.FromSeconds(60));
public void Callback(object state)
{
fillListBox();
}
private void fillListBox()
{
string[] files = Directory.GetFiles("c:\\test", "*");
listBox1.Items.Clear();
foreach (string file in files)
{
listBox1.Items.Add(Path.GetFileName(file));
}
}
jak pozwolić innemu wątkowi na odświeżanie wartości listboxa? a może zrobić to w inny sposób, niż timer w nowym wątku?