tags:

views:

37

answers:

0

To be specific, the error is:

An attempt has been made to free an RCW that is in use. The RCW is in use on the active thread or another thread. Attempting to free an in-use RCW can cause corruption or data loss.

The application in question is a small applet that displays the current clock speed of the CPU as a system tray icon. I'm using a System.Timers.Timer object to refresh the systray icon at an interval of 2.5 seconds. There's a single context menu item to exit the application, which uses the following function to unload everything:

    public void ExitApp(object sender, EventArgs e)
    {
        //stop and disable the timer
        theInterval.Stop();
        theInterval.Enabled = false;

        //unload the system tray icon
        TheIcon.Visible = false;

        //exit the application
        Application.Exit();
    }

If I take out everything but Application.Exit(); I get an RCW error and the systray icon doesn't go away until I mouse over it. Everything was working perfectly until I changed the window style of the hidden form used to initialize the systray icon and the timer.

If it helps any, I'm using C# 2010 Express.