我知道这个问题已经被治疗了好几次,但是给出的代码在很大程度上非常复杂,与我的想法并不相符或几乎没有。 所以我的问题是,在执行我的代码时,我得到标题的错误消息
我的主线程中有一个数据网格,我想在辅助线程中对其进行修改:
private void BtnThread_Click(object sender, RoutedEventArgs e)
{
thread = new Thread(new ThreadStart(ThreadLoop));
thread.SetApartmentState(ApartmentState.STA);
thread.Start();
}
public void ThreadLoop()
{
DateTime? dtdebTemp = new DateTime();
DateTime? dtfinTemp = new DateTime();
DataGrid dg = new DataGrid();
DataGridTextColumn col = new DataGridTextColumn();
col.Header = "test";
Application.Current.Dispatcher.Invoke(new Action(() =>
{
dtdebTemp = dtDeb.Value;
dtfinTemp = dtFin.Value;
dg = MyDataGridOfMainThread;
}));
dg.Columns.Add(col);
}
我暂时只是想添加一个测试列,但这是不可能的。 谢谢您将来的回答。
答案 0 :(得分:-1)
这是因为无法访问对象出线程。 您需要使用委托进行访问。 https://docs.microsoft.com/it-it/dotnet/csharp/language-reference/builtin-types/reference-types