在C#中,class Process继承自实现IDisposable的class Component,因此我可以在任何Process对象上调用Dispose()。我真的非得这么做吗?我怎么知道我是否真的必须这么做呢?
假设我有以下代码:
var allProcesses = System.Diagnostics.Process.GetProcesses();
var processesNames = processes.Select( p => p.ProcessName );
// output process names here
现在,看起来我有了一个Process对象数组,
我在RubyMonk书1CH9.1上演示一个概念的默认代码是这样的。如何关闭打开的文件?显然,我在返回后运行了太多次,现在它返回了这个错误:
# open the file "new-fd" and create a file descriptor:
fd = IO.sysopen("new-fd", "w")
# create a new I/O stream using the file descriptor for "new-fd":
p IO.new(fd)
STDOUT:
class: Errno::EMFILE
m
我有一个使用Process.Start()启动另一个可执行文件的C#应用程序。
在99%的情况下,这个调用都工作得很好。但是,在应用程序运行了相当长的一段时间后,Process.Start()将失败,并显示错误消息:
Insufficient system resources exist to complete the requested service
最初,我认为这一定是由于我的程序中的内存泄漏-我对它进行了相当广泛的分析,似乎没有泄漏-即使这条消息失败,内存占用仍然是合理的。
在发生类似这样的故障后,如果我打印一些系统统计数据,就会发现我有超过600MB的空闲RAM,磁盘上有大量空间,C
不确定我做错了什么。我可以创建一个名为using Now date and time的文本文件。我写入文件失败。如果我没有在CreateText的末尾加上".Close()“,当我尝试写的时候,它会告诉我这个文件被另一个进程打开了。使用".Close()“没有错误,但它不会写入。 var newFileName = "logs\\" + DateTime.Now.ToString().Replace("/","_").Replace(":","-").Replace(" ",
最近,我重新设计了一个古老的PHP应用程序,它的大部分代码都在1000+行中,每个页面都有很长的PHP文件。我首先从将大部分代码重构为类开始。最近我一直在研究数据库连接,并开始为它编写一个类。我决定将$mysqli->close()放入析构函数(我正在使用OO方法)。
不幸的是,我几乎马上就遇到了问题。当页面完成呈现时(或者当不再有对DB对象的引用时),它就会立即关闭,而不是关闭MySQLi连接。我通过编写一个简单的测试来测试这个问题:
$db = new DBConnect(); //My abstraction class
$db->getSQL()->query(
使用匿名管道建立连接后的步骤要求服务器调用DisposeLocalCopyOfClientHandle。MSDN解释道:
在将客户端句柄传递给客户端之后,应该调用DisposeLocalCopyOfClientHandle方法。如果未调用此方法,则当客户端处理其AnonymousPipeServerStream对象时,PipeStream对象将不会收到通知。
为了理解,为什么当客户机关闭时不会被注意到,我继续查看了引用源上的DisposeLocalCopyOfClientHandle:
// This method is an annoying one but it has to ex
$.PeriodicalUpdater.stop();
...gives me...
TypeError: Result of expression '$.PeriodicalUpdater.stop' [undefined] is not a function.
我已经检查了,我不知道为什么它不能正常工作。这个错误在很大程度上是无害的,只是用户的浏览器不会停止它不再需要的服务器调用。
谢谢!