在一个线程中,我创建一些System.Threading.Task
并启动每个任务.
当我做一个.Abort()
杀死线程时,任务不会中止.
我怎样才能传递.Abort()
给我的任务?
在C和C++中,exit()
和之间有什么区别abort()
?我试图在错误后结束我的程序(不是例外).
我通过一个互动的rebase让自己陷入困境,现在我想放弃它.(即回到我被放入交互式rebase模式之前的点,在我的情况下,通过git pull --rebase
.)这样做的方法似乎是通过git rebase --abort
,但这不起作用:
$ git rebase --abort
error: Ref refs/heads/master is at 55b388c141b1485b1acd9e050dbeb0eb90ef2ee7 but
expected b918ac16a33881ce00799bea63d9c23bf7022d67
fatal: Cannot lock the ref 'refs/heads/master'.
Could not move back to refs/heads/master
Run Code Online (Sandbox Code Playgroud)
如何退出交互式rebase模式,并清除所有对它的引用?(git reset --hard
成功,但不会让我退出rebase模式.)
localhost:PodTest3 haiwang$ pod install
Analyzing dependencies
Downloading dependencies
Installing MBProgressHUD (0.9.2)
Installing Masonry (1.0.2)
Generating Pods project
Abort trap: 6
Run Code Online (Sandbox Code Playgroud)
升级到Xcode 8后,cocoapods
不再起作用.我试图卸载并安装,但它仍然无法正常工作.
我想在我的C++应用程序中的特定位置强制执行核心转储.
我知道我可以做以下事情:
int * crash = NULL;
*crash = 1;
Run Code Online (Sandbox Code Playgroud)
但我想知道是否有更干净的方式?
我顺便使用Linux.
我通过指定好的和坏的修订开始我的git bisect,但我不认为他们注册了.另外,因为我试图指定git bisect好坏,我不认为git正在做任何事情.我想中止整个二等分,以便我可以重新启动操作.git bisect reset
似乎是我正在寻找的东西,但我想在可能弄乱任何东西之前仔细检查.
我正在开发一个C#ASP.NET页面,通常最终会重定向到"file:"URL.在大多数情况下,这似乎在大多数情况下工作正常,但偶尔(并且,在我的测试系统上,显然总是)而不是重定向到文件我得到一个文本"对象移到这里"的页面,其中"here"是我尝试重定向到的文件的链接,但在冒号后面有两个斜杠而不是两个(即"file:////testserver/docs/testdoc.doc")
这通常伴随着"System.Threading.ThreadAbortException:Thread is aborted"消息.
我在其他地方寻找解决方案并找到一些有关Response.Redirect的有趣内容导致ThreadAbort异常,但这似乎不是根本问题 - 在我看来,实际问题是"对象移到这里"消息,导致抛出异常.
任何人都有任何建议我为什么会这样......?
编辑:忘记提及我正在使用IE Tab运行Firefox(3.5.7),所以当我想我最好在IE中试用它时,瞧它 - 它适用于IE(7).
我有一些(可能)长时间运行的ajax调用,如果用户导航到另一个页面,我想中止.以下jQuery代码在导航离开页面时调用所有挂起的XMLHttpRequest对象的中止:
$.ajaxSetup({
beforeSend: function(xhr) {
$(window).bind('beforeunload', function() {
xhr.abort();
});
}
});
Run Code Online (Sandbox Code Playgroud)
在测试用例中,我强制在被调用的服务器端操作上等待10秒.使用Firebug,我确认上面的代码确实导致所有挂起的ajax调用在我单击页面上的任何链接时立即停止.但是,浏览器仍然等待整整10秒,然后再转到下一页.IE似乎表现出相同的行为.这是一个已知的浏览器行为吗?在这种情况下,我能做些什么让用户立即离开页面?提前致谢.
通过使用abort()
或当错误真正发生时,Flask有一个很好的错误处理程序.
从Flask文档中有一个错误404处理程序的示例:
@app.errorhandler(404)
def not_found(error):
return render_template('404.html'), 404
Run Code Online (Sandbox Code Playgroud)
所以,我尝试创建自定义错误代码
if False:
abort(777)
@app.errorhandler(777)
def something_is_wrong(error):
return render_template('777.html'), 777
Run Code Online (Sandbox Code Playgroud)
但它不起作用,Werkzeug调试器说:LookupError:777也不例外
我发现这个问题说我应该这样做:
if False:
return '777 error', 777
Run Code Online (Sandbox Code Playgroud)
不幸的是,上面的代码产生了白屏,甚至Werkzeug调试器都没有出来
我知道我可以做到:
if False:
return render_template('777.html')
Run Code Online (Sandbox Code Playgroud)
但如果我使用它,它将使代码更清晰abort()
.有没有办法创建自定义错误代码?
我刚读完"Nutshell中的C#4.0"(O'Reilly),我认为这对于愿意转向C#的程序员来说是一本好书,但它让我感到疑惑.我的问题是using
声明的定义.根据这本书(第138页),
using (StreamReader reader = File.OpenText("file.txt")) {
...
}
Run Code Online (Sandbox Code Playgroud)
恰好相当于:
StreamReader reader = File.OpenText("file.txt");
try {
...
} finally {
if (reader != null)
((IDisposable)reader).Dispose();
}
Run Code Online (Sandbox Code Playgroud)
但是,假设这是真的,并且此代码在单独的线程中执行.此线程现在已中止thread.Abort()
,因此ThreadAbortException
抛出a并假设线程正好在初始化读取器之后和输入try..finally
子句之前.这意味着读者不会被处置!
一种可能的解决方案是以这种方式编码:
StreamReader reader = null;
try {
reader = File.OpenText("file.txt");
...
} finally {
if (reader != null)
((IDisposable)reader).Dispose();
}
Run Code Online (Sandbox Code Playgroud)
这将是中止安全的.
现在我的问题:
using
声明是不是中止安全还是错误,它的行为与我的第二个解决方案相似?using
等同于第一方案(不放弃安全的),为什么它检查null
的finally
?ThreadAbortException
可以在托管代码中的任何位置抛出.但也许有例外,第一个变种毕竟是中止安全的?编辑:我知道使用thread.Abort()
不被认为是好习惯.我的兴趣是纯粹的理论:如何在using
声明中表现究竟?