从另一个线程关闭启动画面

本文关键字:启动 动画 另一个 线程 | 更新日期: 2023-09-27 18:09:13

我使用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();
}));

你不能从创建它们的线程以外的线程访问用户界面元素。通常可以使用Control。调用从其他线程访问UI元素