I did look under the hood and this method is calling Control.Invoke(). Digging deeper down I've stopped at the RuntimeMethodHandle._InvokeMethodFast() method whose code I cannot find. I know that the delegates invoked via Control.BeginInvoke() will use the window's message pump to send and retrieve the delegate and its arguments, so the control/form will not react to Windows messages while it is executing the delegate. That is the behavior I want to have as well when the delegate passed to WindowsFormsSynchronizationContext.Send() executes. For a bit of a background, I want to have this behavior in order to make sure that a grid control will not repaint itself while I'm re- populating the DataTable it is bound to. If you have other suggestions on how to ensure that the grid will not read from the DataTable at the same time a worker thread reloads it, please send them my way. We have noticed that the application crashes if a grid reads from a DataTable at the same time the worker thread is busy clearing and repopulating it. The worker thread runs the queries and then merges the results in the DataTable the controls are bound to. It is the merging of the data only that I want to execute on the UI thread. Thanks much, eugen
On Aug 14, 10:56 pm, eugen_nw wrote: > I did look under the hood and this method is calling > Control.Invoke(). Digging deeper down I've stopped at the > RuntimeMethodHandle._InvokeMethodFast() method whose code I cannot > find. > > I know that the delegates invoked via Control.BeginInvoke() will use > the window's message pump to send and retrieve the delegate and its > arguments, so the control/form will not react to Windows messages > while it is executing the delegate. That is the behavior I want to > have as well when the delegate passed to > WindowsFormsSynchronizationContext.Send() executes. > > For a bit of a background, I want to have this behavior in order to > make sure that a grid control will not repaint itself while I'm re- > populating the DataTable it is bound to. If you have other > suggestions on how to ensure that the grid will not read from the > DataTable at the same time a worker thread reloads it, please send > them my way. We have noticed that the application crashes if a grid > reads from a DataTable at > the same time the worker thread is busy clearing and repopulating it. > The > worker thread runs the queries and then merges the results in the > DataTable the controls are bound to. It is the merging of the data > only that I want to execute on the UI thread. > > Thanks much, eugen Hello Why are you using more then one thread? Use event Bast Regarts Ohav Baumgarten