j'ai un System.Windows.Forms.Form
comme ceci:Disposing classe abonnés à un événement
public class MainForm : Form
{
int _processProgress;
public int ProcessProgress
{
get { return _processProgress; }
set
{
_processProgress = value;
if (ProcessProgressChanged != null)
ProcessProgressChanged(value);
}
}
public delegate void ProcessProgressChangedEventHandler(int progressPercentage);
public event ProcessProgressChangedEventHandler ProcessProgressChanged;
}
Et il a un UserControl
comme celui-ci:
public class MainFormControl : UserControl
{
public MainFormControl()
{
((MainForm)this.ParentForm).ProcessProgressChanged += (progPerc) =>
{
this.TextBox1.Text = "asd";
// Do something
};
}
}
Sera-t-désabonner de la méthode anonyme de la constructeur duMainFormControl
duMainForm.ProcessProgressChanged
événement lorsque leMainFormControl.Dispose()
est appelé (ou lorsque le MainFormControl est supprimé de MainForm)?
Mon code est en C#, framework 4, construit en VS2010 Pro, le projet est en WinForms.
Aidez-nous s'il vous plaît. Merci d'avance.
Alors est-il correct d'exécuter l'événement 'MainForm.ProcessProgressChanged' même si le' MainFormControl' est disposé? –
On dirait qu'il y a un malentendu ici. Lorsque 'MainForm' appelle l'événement' ProcessProgressChanged', votre code (où il est dit 'doSomething') est appelé (sur le même thread). Si MainForm dispose et appelle l'événement, il attendra. Si elle est disposée, il ne devrait pas être tirant des événements à être avec. – debracey
Mais que se passe-t-il si mon code 'doSomething' utilise un contrôle à l'intérieur de' MainFormControl' (comme '((MainFormControl) this) .TextBox1.Text =" asd "')? Est-il correct de disposer le 'MainFormControl' par le' MainForm' _ (je ne dispose pas du formulaire, ce que je dispose est le contrôle du formulaire) _? –