J'ai écrit un programme dans un modèle synchrone que je veux maintenant ajouter un filetage à des tâches longues, j'ai plusieurs propriétés qui permettent d'automatiser la récupération de certaines informations comme:Invoke Propriété
private int tabIdx { get { return tabs.SelectedIndex; } }
private string tabName { get { return tabs.SelectedTab.Text; } }
public TabControls TabControls { get { return (TabControls)tabs.TabPages[tabIdx].Controls[string.Format("tab_{0}_controls", tabIdx)]; } }
internal TabControls getTabControls(string name)
{
int desiredIdx = tabs.TabPages.IndexOfKey(name);
return (TabControls)tabs.TabPages[desiredIdx].Controls[string.Format("tab_{0}_controls", desiredIdx)];
}
public Core rCore { get { return rdbCores[tabIdx]; } }
Il est évident que si je tente pour accéder à ces propriétés de l'intérieur Task.Run(())
ou de même, je vais obtenir une exception de thread-thread.
Donc, ma question est:
Est-il possible de Invoke ces propriétés avec une méthode similaire aussi:
private void invokeIfRequired(ISynchronizeInvoke obj, MethodInvoker action)
{
if (obj.InvokeRequired) { obj.Invoke(action, new object[0]); }
else { action(); }
}
https://stackoverflow.com/a/45961869/17034 –