Tag: abort

C#Threads.Abort()

如果一个线程正在运行一个函数func1 ,它调用其中的另一个函数func2 … 然后我调用了thread.Abort() 这会停止func1 或者func1和func2以及所有函数func1都调用了? 谢谢 编辑:以下是更多细节: func1在新线程中调用,它会定期连续调用func2 … func2只有在某些数组不为空时才开始做一些工作..它完成并返回 当主管想要保存数据时,它会中止Thread of func1 – 然后使数组为null,保存数据,然后用新的数据填充数组..然后再次使用func1启动Thread。 有时会引发exception,因为func2数组为空。所以func1 abort不会影响func2

HttpWebResponse:关闭流

我从HttpWebRequest (使用修改后的版本Jeff Richter的CCR包装器 )获得响应,然后检查一些标头以决定是否继续下载。 有时我可能不想继续,所以我因此发出response.Close和request.Abort 。 是否有必要发出GetResponseStream然后关闭流,或者当调用response.Close时这是隐式的吗? 发出GetResponse后, 文档说明 : 您必须调用Close方法来关闭流并释放连接。 如果不这样做可能会导致您的应用程序用完连接。 那么这是否意味着一旦我们得到响应,那么获取流并关闭它是必须的吗? 我们看到一些相当奇怪的问题,其中挂起的下载最终会淹没系统。 这似乎是资源泄漏的最强候选者,但想知道是否有其他人有这个问题的经验。 旁白:假设它是同一个流,GetResponseStream是否安全两次?

C#的使用语句是否中止?

我刚刚读完了“C#4.0 in a Nutshell”(O’Reilly),我认为这对于愿意转向C#的程序员来说是一本很好的书,但它让我感到疑惑。 我的问题是using语句的定义。 根据这本书(第138页), using (StreamReader reader = File.OpenText(“file.txt”)) { … } 恰好相当于: StreamReader reader = File.OpenText(“file.txt”); try { … } finally { if (reader != null) ((IDisposable)reader).Dispose(); } 但是,假设这是真的,并且此代码在单独的线程中执行。 此线程现在使用thread.Abort()中止,因此抛出ThreadAbortException并假设线程正好在初始化读取器之后和输入try..finally子句之前。 这意味着读者不会被处置! 一种可能的解决方案是以这种方式编码: StreamReader reader = null; try { reader = File.OpenText(“file.txt”); … } finally { if (reader != null) ((IDisposable)reader).Dispose(); } 这将是中止安全的。 […]

什么是停止正在运行的线程的安全方法?

我有一个包含执行IronPython脚本的线程。 出于某种原因,我可能需要随时停止此线程,包括脚本执行。 怎么做到这一点? 第一个想法是Thread.Abort() ,但它已知是邪恶的……

杀死.NET线程

我创建了一个运行某种方法的线程。 但有时我想杀死线程,即使它仍在工作。 我怎样才能做到这一点? 我尝试了Thread.Abort(),但它显示了一个消息框,说“线程已中止”。 我该怎么办?