我想强制我的应用程序关闭,并返回退出代码.看看MSDN,我可以看到在WPF中,Application有一个Shutdown方法,它将一个错误代码作为参数,但似乎没有一个用于System.Windows.Forms.Application.
我可以看到Application.Exit()但不是传递错误代码的方法.
如果有可能,有没有人知道副手?
谢谢
我Application.Current.Shutdown()从一个绑定到xaml windows的类调用ObjectDataProvider,但是应用程序没有关闭.谁能帮我理解为什么?在我的主窗口关闭后,我的应用程序没有完全关闭,它不会从任务管理器的进程列表中消失.
我们有一个.NET Windows服务,以事务方式从A到B挖掘大量高度关键数据.我们还需要确保服务中使用的所有外部组件都未正确分配,并在关闭服务本身之前清除所有内容.这可能需要几个小时!原因是服务需要等待外部组件的回调,该回调在2,3或4小时后到达.
- Windows可以等待这么长时间才能使服务正常关闭吗?
- 在服务中有哪些选项我可以指示当操作系统关闭服务时会发生什么,例如完全阻止关闭?
- 另外,作为另一种情况,如果服务器需要重启会发生什么?可以等几个小时的服务吗?
- 操作系统在杀死服务之前等待服务的时间有多长?
在我的root用户的Android应用程序上,我执行关闭
su reboot -p
Run Code Online (Sandbox Code Playgroud)
它工作正常,但我注意到手机几乎立即关闭(而不是显示关机动画,可能正在做其他事情).
这是以编程方式关闭Android手机的正确方法吗?是否有一些关键代码需要在关机前执行?
是否有可能拦截手机关机事件或者使用不同的黑客攻击?我有一个始终运行的服务,它是收集一些分析数据的非市场应用程序的一部分.我想告诉分析结束会话和报告,然后恢复系统关闭.
我已尝试从服务的onDestroy或onShutdown部分触发事件,但手机将关闭而不给它时间报告.
通过基于活动屏幕进行许多短会话来解决这个问题,会产生我想要避免的非敏感分析信息.
是否有任何可能的方法将swing添加到关闭钩子中(即,在VM关闭时显示弹出窗口)?
我意识到如果我尝试创建一个新的JFrame,它会给我一个错误,因为它试图注册一个关闭钩子,因为VM已经关闭而失败.我只是想知道是否有任何解决方法
这就是事情.我的一位同事试图覆盖我们使用的框架的会话处理.默认情况下,此框架使用PHP自己的本机会话处理,但他现在正尝试在请求之间实现数据库层.
问题是数据库对象在编写会话时不可用,但它可用于其他功能,例如从会话中读取数据时.这是一种疯狂的行为.这是我们做的:
register_shutdown_function('exithandler');
session_set_save_handler(
'sess_open',
'sess_close',
'sess_read',
'sess_write',
'sess_destroy',
'sess_gc'
);
Run Code Online (Sandbox Code Playgroud)
这些函数中的每一个也会在我们的日志文件中写入一行,我们可以使用该函数的名称进行跟踪.无论何时调用该函数,都会执行此操作.现在这里有两个请求的URL,第一个是实际写入会话的地方(会话的新数据),第二个是刚刚检查会话数据的(并且没有写入).这是谜题:
/login/
sess_open
sess_read
exithandler
sess_write
sess_close
/account/
sess_open
sess_read
sess_write
sess_close
exithandler
Run Code Online (Sandbox Code Playgroud)
为什么这种行为有所不同?为什么在将数据存储在会话中之前调用退出处理程序,为什么对于常规页面而言同样如此,即使确实调用了相同的方法?
问题是在调用exithandler之后我们的类都不再可用了,我假设PHP垃圾收集器在我们所有的类上都调用了__destruct()方法,它们就不见了.这很糟糕.
任何人都知道为什么PHP会这样做?
我正试图在我的c程序中检测Linux的关闭或重启.我发现程序可以使用signal(SIGTERM,handler)(SIGKILL,handler).但是如果用户也使用命令终止进程,则会触发这两个.
在某些解决方案中,他们说可以使用运行级别,但它不起作用.在系统初始化运行级别之前,不知道进程是否被kill.我甚至尝试将脚本放在rcx.d中,但它仍然无法正常工作.
有没有人有一些建议?我需要运行在多种Linux系统上.
谢谢.
[更新]我使用R解决方案,但我仍然没有看到我的数据在重启或关机时是否清晰.是我的功能错了吗?
int start() {
if (initIni() == EXIT_FAILURE)
return EXIT_FAILURE;
struct sigaction act;
memset(&act, '\0', sizeof(act));
act.sa_sigaction = &signal_callback_handler;
act.sa_flags = SA_SIGINFO;
sigaction(SIGTERM, &act, NULL);
....
}
void signal_callback_handler(int signum, siginfo_t *siginfo, void *context) {
if (signum == SIGTERM && (long)siginfo->si_pid == 1) {
clearData();
}
exit(signum);
}
Run Code Online (Sandbox Code Playgroud)
[更新]最后,我使用David Schwartz runlevel(8)示例来解决我的问题.如果你使用linux命令运行级别,它将没有用.谢谢你的解决方案.
在Java中处理线程时,处理InterruptedException似乎是我身边的一个特殊刺.我很欣赏它在我的线程被终止时被抛出的事实,因此我有机会进行清理.对我来说似乎很奇怪的是,这不是一个未经检查的例外.
这会产生以下问题:a)如果我想在我的线程应用程序中使用现有框架,我将被迫将其转换为框架接口接受的异常.因此,框架通常会误解它,而不是按照它应该清理或传播它.
b)除非为堆栈中的每个调用严格声明InterruptedException(并且通常不是因为a),否则很难干净地关闭.
如果取消选中InterruptedException,那么它似乎会有更高的可能性,并且通常会导致线程和应用程序的干净关闭.为什么不呢?
目前我正在使用 Python 中的 SimpleXMLRPCServer 模块编写一个应用程序。
此应用程序的基本目标是继续在服务器上运行并继续检查队列中的任何任务。如果它在队列中遇到任何新请求,则为该请求提供服务。
我正在尝试做的快照:
类 MyClass():
"""
This class will have methods which will be exposed to the clients
"""
def __init__(self):
taskQ = Queue.Queue()
def do_some_task(self):
while True:
logging.info("Checking the Queue for any Tasks..")
task = taskQ.get()
# Do some processing based on the availability of some task
Run Code Online (Sandbox Code Playgroud)
如果名称==“主要”:
server = SimpleXMLRPCServer.SimpleXMLRPCServer((socket.gethostname(), Port)
classObj = MyClass()
rpcserver.register_function(classObj.do_some_task)
rpcserver.serve_forever()
Run Code Online (Sandbox Code Playgroud)
一旦服务器启动,它就会永远留在 do_some_task 方法中的循环中,以不断检查队列中的任何任务。这就是我想要实现的目标。但现在我想优雅地关闭服务器。在这种情况下,我无法关闭服务器。
到目前为止,我已经尝试将全局标志 STOP_SERVER 用于“True”,并在 do_some_task while 循环中检查其状态以退出并停止服务器。但没有帮助。
尝试使用 SimpleXMLRPCServer 的 SHUTDOWN() …