I used this function in a Windows forms
application:
delegate void ParametrizedMethodInvoker5(int arg);
private void log_left_accs(int arg)
{
if (InvokeRequired)
{
Invoke(new ParametrizedMethodInvoker5(log_left_accs), arg);
return;
}
label2.Text = arg.ToString();
}
But in WPF
it doesn't work. Why?
In WPF, the Invoke
method is on the dispatcher, so you need to call Dispatcher.Invoke
instead of Invoke
. Also, there is no InvokeRequired
property, but the dispatcher has a CheckAccess
method (for some reason, it's hidden in intellisense). So your code should be:
delegate void ParametrizedMethodInvoker5(int arg);
void log_left_accs(int arg)
{
if (!Dispatcher.CheckAccess()) // CheckAccess returns true if you're on the dispatcher thread
{
Dispatcher.Invoke(new ParametrizedMethodInvoker5(log_left_accs), arg);
return;
}
label2.Text= arg.ToString();
}