如果我创建一个新的Delphi表单,挂钩其OnResize事件,并运行该应用程序,OnResize将在窗口显示之前触发.对于任何一个窗口,我不知道这是否会永远发生.
(对于熟悉Windows API的人来说,我已经将它追溯到TCustomForm.ShowingChanged中的ShowWindow调用(Delphi 2007中的Forms.pas第5503行),这显然会触发一个WM_SIZE......至少是一个没有其他窗口的新窗口属性设置.我没有看到它记录ShowWindow总是触发WM_SIZE,所以我不知道我是否可以指望这个.)
所以:我可以依靠TForm 在首次显示时始终触发OnResize吗?或者是否有情况(可能是窗口不可调整大小,可能是如果Position属性具有某些值,等等)OnResize 在首次显示窗口之前可能无法触发?
情况就是这样: - 我们刚刚在手机上提交的应用程序的开发版本,工作正常好几天(以前的版本工作好几周).
- 昨天,我触摸了应用程序图标,应用程序启动然后崩溃了(当时我没有连接到我的计算机,但如果我不得不猜测,那是在applicationDidFinishLaunching运行时或之前).基本上,我简要地看到我的Default.png,然后应用关闭.每次我尝试运行它时都会发生这种情况.
- 我重启手机 没有区别,该应用仍然无法启动.所有其他iphone应用程序我似乎工作正常.
- 今天早上我从我的开发计算机上重新安装了应用程序,一切都很好,它再次正常工作.没问题.这是具有相同构建参数的SAME EXACT CODE.
这让我非常担心,有没有人知道可能会发生什么?这就像应用程序永久性地打破了自己,甚至在我的任何代码之前都没有:(.我有一个理论它可能与过期的配置文件有关,但我没有收到任何消息,或者当我重新安装时.
我很感激人们的任何建议/指点/想法!
我在Windows启动时获得了以下代码来运行应用程序:
private void SetStartup(string AppName, bool enable)
{
string runKey = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run";
Microsoft.Win32.RegistryKey startupKey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(runKey);
if (enable)
{
if (startupKey.GetValue(AppName) == null)
{
startupKey.Close();
startupKey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(runKey, true);
startupKey.SetValue(AppName, Application.ExecutablePath.ToString());
startupKey.Close();
}
}
else
{
startupKey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(runKey, true);
startupKey.DeleteValue(AppName, false);
startupKey.Close();
}
}
Run Code Online (Sandbox Code Playgroud)
有用.但我想让程序最小化(仅在Windows启动时).我没有找到工作代码/很好的解释如何做到这一点.你能帮我吗?
谢谢.
在Windows Startup上启动node.js脚本的最佳方法是什么?
首选免费软件或开源软件.
我有一个 WPF 项目,我尝试使用 Dale Ragan在 StackOverflow 上描述的 Microsoft.VisualBasic dll 的配方使其成为单实例应用程序
在带有 Framework 4.5 的 Visual Studio 2013 中这样做会在编译时给我 2 倍的相同错误:“...为每个入口点定义了多个入口点...”。然后我认为我会在我的项目属性的“应用程序”选项卡的“启动对象”项的组合框选项中看到两个入口点。但它是空的。为什么“启动对象”comboBox 为空以及如何设置入口点?会不会是微软的bug?
附加信息: - 带有入口点的 2 个文件是“App.g.cs”(自动生成)和我新定义的带有入口点的类 - main :“EntryPoint.cs”
我有一个Java EE项目,该项目在Eclipse Mars中通过EJB注入在Glassfish 4.1容器中执行。我有一个Singleton EJB,可以在应用程序启动时初始化或更新数据库
@Startup
@Singleton
public class DatabaseUpdater {
private static final Logger LOG = Logger.getLogger(DatabaseUpdater.class.getName());
/**
* Initializes database process
*/
@PostConstruct
public void initialize(UserVO userVO) {
// ... initialize code
}
}
Run Code Online (Sandbox Code Playgroud)
该项目在Eclipse Mars中使用“ 在服务器上调试”选项执行,并且运行良好。但是昨天我只是尝试执行此操作以启动项目,并且部署过程在Eclipse中失败了。出现此异常堆栈:
2016-02-21T11:03:52.001-0500|Grave: Exception during lifecycle processing
javax.ejb.EJBException: javax.ejb.CreateException: Initialization failed for Singleton DatabaseUpdater
at com.sun.ejb.containers.AbstractSingletonContainer$SingletonContextFactory.create(AbstractSingletonContainer.java:649)
at com.sun.ejb.containers.AbstractSingletonContainer.instantiateSingletonInstance(AbstractSingletonContainer.java:389)
at org.glassfish.ejb.startup.SingletonLifeCycleManager.initializeSingleton(SingletonLifeCycleManager.java:219)
at org.glassfish.ejb.startup.SingletonLifeCycleManager.initializeSingleton(SingletonLifeCycleManager.java:180)
at org.glassfish.ejb.startup.SingletonLifeCycleManager.doStartup(SingletonLifeCycleManager.java:158)
at org.glassfish.ejb.startup.EjbApplication.start(EjbApplication.java:166)
at org.glassfish.internal.data.EngineRef.start(EngineRef.java:122)
at org.glassfish.internal.data.ModuleInfo.start(ModuleInfo.java:291)
at org.glassfish.internal.data.ApplicationInfo.start(ApplicationInfo.java:352)
at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:500)
at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:219)
at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:491)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:539)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:535) …Run Code Online (Sandbox Code Playgroud) 我添加了一个Timer到Startup类的的ASP.Net Core应用。它会在某个时间段触发,并执行诸如记录示例文本的操作。我需要它能够执行数据库驱动的操作,例如将记录添加到表中。因此,我尝试AppDbContext从DI 获取信息,但它始终为null。请查看代码:
public class Scheduler
{
static Timer _timer;
static bool _isStarted;
static ILogger<Scheduler> _logger;
const int dueTimeMin = 1;
const int periodMin = 1;
public static void Start(IServiceProvider serviceProvider)
{
if (_isStarted)
throw new Exception("Currently is started");
_logger = (ILogger<Scheduler>)serviceProvider.GetService(typeof(ILogger<Scheduler>));
var autoEvent = new AutoResetEvent(false);
var operationClass = new OperationClass(serviceProvider);
_timer = new Timer(operationClass.DoOperation, autoEvent, dueTimeMin * 60 * 1000, periodMin * 60 * 1000);
_isStarted = true;
_logger.LogInformation("Scheduler started"); …Run Code Online (Sandbox Code Playgroud) 我的应用程序具有以下 gradle 依赖性:
compile "org.springframework.boot:spring-boot-starter-mail"
Run Code Online (Sandbox Code Playgroud)
我使用网络中可用的邮件服务器,对我来说它工作正常。
但是在另一个网络中它不起作用并且应用程序无法启动:
20.11.17 20:27:15.895 [main] ERROR o.s.boot.SpringApplication - Application startup failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.boot.autoconfigure.mail.MailSenderValidatorAutoConfiguration': Invocation of init method failed; nested exception is java.lang.IllegalStateException: Mail server is not available
at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:137)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:409)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1620)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:555)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:761)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:867)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:543)
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:693)
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:360)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:303)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1118)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1107)
at my.Application.main(Application.java:12)
Caused by: java.lang.IllegalStateException: Mail server …Run Code Online (Sandbox Code Playgroud) 我正在试验 Docker。当我安装容器时,它们与我现有的 Jenkins 端口冲突。在这种情况下,我没有使用 Jenkins。如何防止 Jenkins 在启动时运行。
当 spring 应用程序准备好时,我需要执行一些工作,类似于@Scheduled但我希望它只执行一次。我找到了一些方法来做到这一点,例如@PostConstruct在 bean 上使用,使用@EventListeneror InitializingBean,但是,所有这些方法都不符合我的需要。如果在此逻辑的执行过程中出现问题,我想忽略它,以便应用程序无论如何都会启动。但是使用这些方法应用程序会崩溃。
当然,我可以用 包围逻辑,try-catch它会起作用。但是,还有更优雅的方式吗?