"Must create DependencySource on same Thread as the DependencyObject" When Create GridView
c#, dispatcher, multithreading, wpf
Solution
As the error says `Dependency Property and its corresponding binding have to be created on same thread`. It can't be set on different threads. Put the creation of grid on UI dispatcher too. Since your ListView `View` DP is created on UI thread, hence its source property i.e. `GridView` should also be on UI thread.
Application.Current.Dispatcher.Invoke((Action)(delegate
{
GridView grid = new GridView();
grid.Columns.Add((GridViewColumn)myresourcedictionary["gridDirFileName"]);
grid.Columns.Add((GridViewColumn)myresourcedictionary["gridDirFileType"]);
grid.Columns.Add((GridViewColumn)myresourcedictionary["gridDirFileDataModified"]);
grid.Columns.Add((GridViewColumn)myresourcedictionary["gridDirFileSize"]);
ListViewOp.View = grid
}));
Problem
I have a problem with thread.When I want set a GridView into a ListView as View in another thread.It display a message which said: Must create DependencySource on same Thread as the DependencyObject. ``` // Create grid view GridView grid = new GridView(); // Add column // Name grid.Columns.Add((GridViewColumn)myresourcedictionary["gridDirFileName"]); // Type grid.Columns.Add((GridViewColumn)myresourcedictionary["gridDirFileType"]); // Data Modified grid.Columns.Add((GridViewColumn)myresourcedictionary["gridDirFileDataModified"]); // Size grid.Columns.Add((GridViewColumn)myresourcedictionary["gridDirFileSize"]); // Edit view Application.Current.Dispatcher.Invoke(new Action(() => ListViewOp.View = grid)); ``` What am I doing?