Finalement j'ai trouvé une solution encore plus propre pour utiliser des méthodes avec arguments et un retour dan un contexte winform, enfin je crois.
L'objectif était de ne pas hériter de Control, j'ai donc instancier un Control dans la classe qui doit invoquer des méthodes de manière thread-safe.
public class Class1 { private Control _control; private delegate Boolean DoworkDelegate(String arg1, String arg2); public Class1() { this._control = new Control(); } private Boolean DoworkDelegate(String arg1, String arg2) { if (this._control.InvokeRequired) { return Convert.ToBoolean(this._control.Invoke(new DoworkDelegate(this.DoWork),new objetct[]{arg1,arg2})); } else { // Fais ton job ici :) return true; } } }
Propre, simple et économique en ressources :)