1 votes

Impossible d'accéder à un objet nommé "ParkingWindow".

J'obtiens par intermittence cette erreur dans mon application Windows Forms .NET 1.1 C#. Quelqu'un a indiqué que cela est dû à un bogue dans le cadre 1.1 et suggère de mettre le code suivant dans tous les contrôles personnalisés.

protected override void OnParentChanged(EventArgs e)
{
  if (this.Parent != null)
  {
    this.CreateParams.Parent = this.Parent.Handle;
    this.RecreateHandle();
  }
  base.OnParentChanged(e);
}

Quelqu'un d'autre a-t-il trouvé que cela a résolu le problème pour lui ? Quelqu'un peut-il fournir un moyen de reproduire systématiquement l'erreur, afin que je puisse vérifier qu'elle est corrigée après avoir appliqué les modifications ?

S'il existe une solution alternative, je suis également ouvert à cette idée.

1voto

Petar Repac Points 2429

D'après le titre, il semble que votre code essaie d'accéder à un objet déjà disposé. Cela peut se produire dans le finaliseur si vous essayez d'accéder à un champ de référence géré. L'ordre dans lequel le CLR finalise les objets gérés est non-déterministe.

0voto

TimothyP Points 6043

Hé, je ne suis pas sûr de votre problème car je n'ai pas utilisé .NET 1.1 depuis des lustres, et je déteste énoncer une évidence... mais qu'est-ce qui vous empêche de migrer vers vers .NET 2.0 ou même 3.5 (ne vous sentez pas offensé, cela m'intéresse de savoir).

Je peux comprendre que .NET 3.5 puisse être précoce dans certains cas, mais .NET 2.0 devrait être une valeur sûre étant donné que la plupart des utilisateurs en disposent soit par le biais des mises à jour de Windows, soit par défaut s'ils utilisent Vista.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X