I wanted my program to show a loading message while it checks if the program has connected to a device... but i get an error when i try to close the splashform using the code
SplashForm.CloseForm();
the actual splashform code is...
class SplashForm
{
    //Delegate for cross thread call to close
    private delegate void CloseDelegate();
    //The type of form to be displayed as the splash screen.
    private static SplashForm splashForm;
    static public void ShowSplashScreen()
    {
        // Make sure it is only launched once.
        if (splashForm != null)
            return;
        Thread thread = new Thread(new ThreadStart(SplashForm.ShowForm));
        thread.IsBackground = true;
        thread.SetApartmentState(ApartmentState.STA);
        thread.Start();           
    }
    static private void ShowForm()
    {
        splashForm = new SplashForm();
        Application.Run(splashForm);
    }
    static public void CloseForm()
    {
        splashForm.Invoke(new CloseDelegate(SplashForm.CloseFormInternal));
    }
    static private void CloseFormInternal()
    {
        splashForm.Close();
    }
...
}
in this code... I get a error message as "Object reference not set to an instance of an object" at the line
 splashForm.Invoke(new CloseDelegate(SplashForm.CloseFormInternal));
what is the reason and solution?
                        
The
Object reference not set to an instance of an objectmessage is the trademark of the NullReferenceException. Here, it means that yoursplashFormfield is null.Make sure that you have 1) called
SplashForm.ShowSplashScreen()before you callSplashForm.CloseForm()and 2) consider callingthread.Join()inShowSplashScreen()so you can be sure that by the time you leave that method,splashFormis not null.