Momentálne práve prebieha aktualizácia nášho systémudatabázový systém a všetky súbory vytvorením (32bit-2005 VC #) na 64 bitov teraz. Niečo, na čo som narazil, je únik údajov pri použití priradenia this.closing + = new CancelEventArgs (Názov udalosti); Zistil som, že je zastaraný, pretože to povedali kolegovia, a hľadám spôsob, ako prejsť na používanie udalosti FormClosing.
...
Starý kód a udalosť Pr.
this.Closing += new CancelEventHandler(AssignUsers_Closing);
private void AssignUsers_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
try
{
"some event"
}
catch (Exception ex)
{
ShowException se = new ShowException();
se.ShowDialog(ex);
}
}
Tu by som chcel skonvertovať na internetFormClosing Event, aby sa Windows mohli postarať o únik údajov namiesto toho, aby som musel pridávať - = vyhlásenie pre každú takúto udalosť do funkcie .dispose ().
Nápad / nový kód
private void AssignUserForm_FormClosing(object sender, FormClosingEventArgs e)
{
try
{
*code*
// Use e.cancel to test whether to close the form or not.
}
catch (Exception ex)
{
ShowException se = new ShowException();
se.ShowDialog(ex);
}
}
Bola by to životaschopná alternatíva. Máte nejaké návrhy, ako túto zmenu vykonať?
ÚPRAVA: LEPŠÍ PREHĽAD MÔJ OTÁZKY
Zmena:
public AssignUserForm()
{
InitializeComponent();
InitMe();
try
{
Database.ApplyFieldSecurity(this);
}
catch { }
}
private void InitMe()
{
try
{
this.Closing += new CancelEventHandler(AssignUsers_Closing);
// Get the users from the system
//Binding happens
}
catch (Exception ex)
{
throw ex;
}
}
Z toho sa stáva niečo, z čoho môžem pomocou udalostí Windows jednoducho vytvoriť udalosť FormClosing.
odpovede:
0 pre odpoveď č. 1Problémy boli vyriešené. Medzi našou databázou a pri načítavaní ovládacieho prvku, do ktorého tento dialóg patril, došlo k úniku údajov. Vážim si všetku pomoc. Databáza načítala informácie skôr, ako sa načíta dialógové okno, a potom ich pošle znova. Iba jedna sada údajov bola správne zlikvidovaná. Opravili sme problém. Ďakujem. -