我有LoginForm
,Splashscreen
,MainForm
和Authentification
。
目前的设计是在任何其他操作LoginForm
之前显示MainForm
。
Main()调用模式LoginForm检查凭据,如果确定Application.Run(MainForm)与Splashcreen。
问题:当EF检查uid / pwd时,LoginForm会冻结6秒。结果显示了启动屏幕< 1秒。
Q1:有没有办法加快冷启动,因为只在MainForm启动前检查用户/密码组合?
Q2:什么是最好的启动序列设计?你的想法:
LoginForm
,使用上下文加载虚拟数据(所有用户)调用Spashscreen
,LoginForm
并检查凭据。注意: EF600rc还没有UNIQUE注释。
答案 0 :(得分:0)
更好的解决方案是使用框架窗口,该窗口显示登录屏幕。登录屏幕检查凭据并让框架窗口切换到主屏幕。
您可以阅读here。源代码也可用。
答案 1 :(得分:0)
到目前为止,我可以找到答案:
A1:升级EF,并使用Ngen和VS2013为link (performance issue)生成EntityFramework程序集的原生图像。但VS2013不适合我。其他选择可能是降级到EF5。?!?
A2: LogIn表单的建议启动顺序,Splash Screen暴露在良好状态。
答案 2 :(得分:0)
关于序列
启动屏幕有助于提供一个" face"到您的申请。它们通常是吸引人的,但是等等等等,但对于开发人员而言,它们是让应用程序的某些部分在幕后初始化的一个很好的工具。因此,有时这个批量最初在认证之前或之后取决于应用程序。很多时候它会出现,因为必须加载用户相关的数据。
现在从用户点看,如果查看Login-> Splash->应用程序过多转换IMO,特别是考虑到将两者结合的可能性。
另类想法
这是另一个满足要求并使其更容易编程的想法。 你可以将2与一些精心设计的启动画面UID结合起来,密码字段可能就在启动画面上。然后,当单击用户标识/密码并且服务器正在进行身份验证时,您可以继续显示一些"进度条"当用户通过身份验证(> 3秒)后,您现在可以预加载您的应用数据(授权/安全数据等)并仍然继续。
我不熟悉MS技术,所以可以进入具体的,但考虑到您遇到的问题的性质,这应该很容易实现。祝你好运。