Comment puis-je prolonger un WinForm la méthode dispose?
J'obtiens ce message d'avertissement de FxCop:
"'RestartForm' contient le champ " RestartForm.fait "qui est de IDisposable type: "ManualResetEvent'. Changement de la méthode dispose sur "RestartForm' à l'appel de la Jeter ou de la Fermer sur ce champ."
Ok, je comprends ce que cela signifie et pourquoi c'est ce qui doit être fait... Sauf System.Windows.Forms.Form
ne vous autorise pas à remplacer soit .Close()
ou .Dispose()
, alors que faire? Actuellement, je suis en cours d'exécution avec cette solution:
private void RestartForm_FormClosing(object sender, FormClosingEventArgs e)
{
done.Set();
done.Close();
}
Qui fonctionne comme prévu pour ma demande... Mais FxCop affiche toujours ce message. Suis-je couvert et que je peux l'ignorer, ou est-il une autre façon pour moi de faire cela?
- Vous pouvez également vous abonner aux Éliminés de l'événement dans votre constructeur, si vous ne voulez pas toucher code généré par le concepteur.
Vous devez vous connecter pour publier un commentaire.
Vous devez remplacer la
Dispose
méthode deForm
Généralement, il est automatiquement remplacé dans les RestartForm.Le concepteur.cs de fichier, de sorte que vous aurez besoin de déplacer le disposer dans votre fichier de code, de sorte que vous pouvez ajouter le code que vous devez ajouter, sans qu'il soit réécrit par le concepteur.
Dans le RestartForm.cs
disposing
etcomponents != null
sont évalués à la même ligne? Par exemple.if (disposing && (components != null))
(par défaut pour vs2013)J'utilise cette méthode 🙂
Si RestartForm s'étend Système.De Windows.Les formulaires.Forme, vous devriez être en mesure de remplacer dispose(bool disposing). Vous devez implémenter correctement ce pour votre "RestartForm" classe pour vous débarrasser de vos IDisposables.
Il devrait ressembler à:
Vous avez besoin pour remplacer la méthode dispose, cette méthode provient du de la classe de base