繁体   English   中英

从计时器内部的ListBox中删除

[英]Removing from ListBox inside of a Timer

ObservableCollection<String> listBoxItems = new ObservableCollection<String>();
scheduledRecordingListBox.ItemsSource = listBoxItems;

public void timerElapsed(object sender, ElapsedEventArgs e)
{
    listBoxItems.Remove(itemToBeRemoved);
}

只是我实际上正在尝试做的一小段。 我相信是由于计时器在与我要从中删除的ObservableCollection的GUI主线程不同的线程上运行而导致的错误。

如果使用的是WinForms,则只需使用System.Windows.Timer类。 它的Tick事件在UI线程上自动执行。

尝试使用Invoke,它在拥有控件的基础窗口句柄的线程上执行委托。

您也可以在此页面中查看部分计时器

这应该做的把戏:

public void timerElapsed(object sender, ElapsedEventArgs e)
{
    this.Invoke(new Action(() => listBoxItems.Remove(itemToBeRemoved)));
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM