我有一个关于线程的问题。
我有一个 WPF 应用程序,它应该显示一些查询的状态。为此,我创建了一个类,它在多个线程(后台工作人员)中运行多个查询。我还创建了一个事件,因此我可以在查询运行时做出反应。
private void cmdStart(object sender, RoutedEventArgs e)
{
QuerySetup qs = new QuerySetup();
//Filling qs with some data
//...
SqlProxy sql = new SqlProxy();
sql.QueryCompleted += new SqlProxy.QueryCompletedEventHandler(sql_QueryCompleted);
//Starts the backgroundworker
sql.RunSQL(qs);
}
private void sql_QueryCompleted(QueryResult qr)
{
lstStatus.Items.Clear();
lstStatus.Items.Add(qr.RuntimeTotal);
//... and some more...
}
现在我收到一条错误消息,告诉我,我无法访问 lstStatus,因为它由不同的线程拥有。
但为什么?事件不应该与 GUI 在同一个线程中吗?我该如何解决我的问题?