Το πρόβλημα είναι το εξής.
Έχω μία φόρμα την οποία ανάλογα με το κάλεσμα που τις κάνω θέλω να φορτώνεται σε πολλά instances αλλά και ως singleton. Φτιάχνω λοιπόν την κεντρική φόρμα βάζω τα κουμπιά μου και πατάω π.χ "Εμφάνιση λίστας πελατών". Ο κώδικας για αυτό το κουμπί είναι ο εξής.
Dim fCustomersList as New CustomersGridViewForm
fCustomersList.MdiParent=Me
fCustomersList.Show
Με το παραπάνω ήμαστε εντάξει. Όσες φορές και αν πατήσω το κουμπί μου φορτώνει νέο instance της φόρμας. Πάμε παρακάτω τώρα. Στην εφαρμογή μου δεν θέλω να φορτώνεται κάθε φορά νέο instance. Αλλά να φέρνει πάντα το ένα που έχει φορτωθεί και αν όχι να δημιουργήσει ένα εκείνη την στιγμή. Επίσης όσα μελλοντικά καλέσματα γίνονται στον κώδικά μου να μην δημιουργειτε πάλι νέο Instance αλλά να φέρνει αυτό. Δηλαδή αν ξαναπατήσω πάλι το κουμπί "Εμφάνιση λίστας πελατών" να μην δημιουργήσει ξανά την φόρμα. Δείτε τον κώδικα και ελπίζω να καταλάβεται. Πάμε λοιπόν...
Στην φόρμα CustomersGridViewForm γράφω το εξής :
Public
Class CustomerGridViewForm
Private Shared mInstance As CustomerGridViewForm
Public Shared Function SingletonLoad() As CustomerGridViewForm
If mInstance Is Nothing Then mInstance = New CustomerGridViewForm
Return mInstance
End Function
End Class
Μετά από αυτό στο Event Click του Button γράφω τον εξής κώδικα:
Dim fCustomersList as CustomersGridViewForm
fCustomersList=CustomersGridViewForm.SingletonLoad
Ο παραπάνω κώδικας τρέχει κανονικά στο πρώτο πάτημα του κουμπιού. Κλείνω την φόρμα και την κάνω dispose. Ξαναπατάω το κουμπί. Και εκεί παίρνω το εξής μήνυμα "Cannot access a disposed object". Δεν μπορώ να καταλάβω που είναι το πρόβλημα...