我正在寻找一种告诉我的Cocoa应用程序退出的好方法.请放心,这不会用于生产代码.我只是在寻找一种简单的方法来运行一个测试,然后在调试期间关闭应用程序.
我发现exit(0);
将关闭应用程序,但它绕过了所有正常的应用程序退出程序,我想保留所有这些程序.
基本上我想让事情好像用户从菜单中拉出"退出",但我希望它在我完成测试后自动发生.
我的代码目前看起来像这样:
#if (SUPERFANCY_TESTING_MODE)
[self doSomething];
exit(0); // <-- I need something better to go here
#endif
Run Code Online (Sandbox Code Playgroud) 我经常使用ipdb,只是跳转到一段孤立的代码,即很难编写一个使用它的真实脚本.相反,我用模拟编写了一个最小的测试用例并跳转到它.
工作流程的示例:
def func():
...
import ipdb
ipdb.set_trace()
...
def test_case():
...
func()
...
Run Code Online (Sandbox Code Playgroud)
然后,调用
py.test test_file.py -s -k test_case
Run Code Online (Sandbox Code Playgroud)
现在,通常我只检查一个或两个变量,然后想要退出.更改代码并重新执行.
我该如何戒烟?手册说q
退出调试器.它(真的)没有.在调试器实际终止之前,您必须退出几次.Ctrl-C和Ctrl-D的相同行为(多次击中Ctrl-D的挫折最终也会退出终端).
是否有一种强制退出的聪明方法?这个工作流程是否合理?这样做的标准方法是什么?
我想知道我应该使用哪个.关闭我的WinForm应用程序在对话模式下触发一个窗体.该表单运行一个后台工作程序,它将数据库与远程数据库同步,并在"启动表单"上显示它的进度.
我有一个像这样的方法:
private void CloseMyApp()
{
SaveUserSettings();
splashForm = new SplashForm();
splashForm.ShowDialog();
Application.ExitThread();
//Application.Exit();
}
Run Code Online (Sandbox Code Playgroud)
这就是我所说的从菜单 - >退出和Form_FormClosing()
事件中关闭我的应用程序. Application.Exit()
给出以下错误 - >
收集被修改; 枚举操作可能无法执行.
现在我读到这Environment.Exit()
是残酷的,意味着你的应用程序可能有问题(见这里).
Application.ExitThread()
虽然有效,但我认为它可能只是出现在工作中,因为在我不确定何时通常这样做之前我从未使用它.
我是一个相当不错的Java程序员,但我是Clojure编程的新手.
在Java中,为了强制退出程序,使用的代码是System.exit(0)
.这个代码有没有等同于Clojure?
我一直在观察,即使进程仍在运行,Process.HasExited
有时也会返回true
.
我的代码在下面启动一个名为"testprogram.exe"的进程,然后等待它退出.问题是有时我会抛出异常; 似乎即使HasExited
返回true
过程本身在系统中仍然存在 - 这怎么可能?
我的程序在它终止之前写入日志文件,因此我需要在读取之前绝对确定该日志文件存在(也就是进程已终止/完成).不断检查它的存在不是一种选择.
// Create new process object
process = new Process();
// Setup event handlers
process.EnableRaisingEvents = true;
process.OutputDataReceived += OutputDataReceivedEvent;
process.ErrorDataReceived += ErrorDataReceivedEvent;
process.Exited += ProgramExitedEvent;
// Setup start info
ProcessStartInfo psi = new ProcessStartInfo
{
FileName = ExePath,
// Must be false to redirect IO
UseShellExecute = false,
RedirectStandardOutput = true,
RedirectStandardError = true,
Arguments = arguments
};
process.StartInfo = psi;
// Start the program
process.Start(); …
Run Code Online (Sandbox Code Playgroud) 我正在我的程序中创建多个线程.按下时Ctrl-C,将调用信号处理程序.在一个信号处理程序里面,我exit(0)
终于放了.问题是,有时程序安全终止,但有时,我得到运行时错误说明
abort() has been called
Run Code Online (Sandbox Code Playgroud)
那么避免错误的可能解决方案是什么?
我试过在一行上单词"quit",但这似乎只是将命令行指针从">"更改为">>".在交互式Lua中结束会话的最佳方法是什么?
我正试图退出REPL.
我使用(. System exit 0)
或(System/exit 0)
,但这会导致错误:
Exception in thread "Thread-3" java.lang.RuntimeException: java.lang.IndexOutOfBoundsException
Run Code Online (Sandbox Code Playgroud)
还有另一种退出REPL的方法吗?我该如何解决这个错误?
这是我正在处理的简单网络服务器
var server = require("http").createServer(function(req,resp) {
resp.writeHead(200,{"Content-Type":"text/plain"})
resp.write("hi")
resp.end()
server.close()
})
server.listen(80, 'localhost')
// The shortest webserver you ever did see! Thanks to Node.JS :)
Run Code Online (Sandbox Code Playgroud)
除了保持活力之外,效果很好.当第一个请求进入时,server.close
会被调用.但这个过程并没有结束.实际上TCP连接仍然是打开的,这允许另一个请求通过,这是我试图避免的.
如何关闭现有的保持连接?