Thanks again, Hans. I think we'll have to go with making the HelpProvider a component of the form.
However, if ResetShowHelp() is supposed to release the reference, then there appears to be a bug in it. I can't find any way to get a HelpProvider to release a reference to a Form.
On my system, in this application it takes about 3 or 4 iterations of creating and closing Form2 before I get an out of memory error. Can anybody rewrite Form1.form2_FormClosed() such that the reference is released?
public partial class Form1 : Form { private HelpProvider m_HelpProvider = new HelpProvider(); public Form1() { InitializeComponent(); }
private void button1_Click(object sender, EventArgs e) { GC.Collect(); GC.WaitForPendingFinalizers();
Form2 form2 = new Form2(); m_HelpProvider.SetHelpNavigator(form2, HelpNavigator.Index); form2.FormClosed += new FormClosedEventHandler(form2_FormClosed); form2.Show(); }
void form2_FormClosed(object sender, FormClosedEventArgs e) { m_HelpProvider.ResetShowHelp((Control)sender); // this doesn't work either: // m_HelpProvider.SetShowHelp((Control)sender, false); } }
public partial class Form2 : Form { private int[] x = new int[59999999]; public Form2() { InitializeComponent(); } }
|