我正在使用 WindowsFormsApplicationBase 来显示启动画面。现在,当创建主表单并发生错误时,应该显示一个消息框来通知用户。但是,消息框显示在初始屏幕下方,因此不可见。我需要关闭启动画面,以便与用户进行交互。

以下代码会给出跨线程操作异常:

class SingleInstanceApplication : WindowsFormsApplicationBase
{
    private static SingleInstanceApplication instance;

    public static void CloseSplash()
    {
        if (instance.SplashScreen != null)
            instance.SplashScreen.Close();
    }
}

错误:
Cross-thread operation not valid: Control 'Splash' accessed from a thread
other than the thread it was created on.

这甚至可能吗?

最佳答案

如果您的初始屏幕表单名为 mySplashScreen :

mySplashScreen.Invoke(new MethodInvoker(delegate {
    mySplashScreen.Close();
    mySplashScreen.Dispose();
}));

关于c# - 从不同的线程关闭启动画面?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7471841/

10-12 17:45