草庐IT

c# - socket 的 Shutdown、Disconnect、Close 和 Dispose 到底是做什么的?

针对网络编程新手,很难找到关于这四种方法实际上的作用的简单解释。人们通常只是陈述他们认为在特定情况下关闭套接字的正确方法,而不是每个步骤背后发生的事情。遵循以人为本的哲学,你能解释一下Shutdown、Disconnect、Close和Dispose方法? 最佳答案 安answer在StackOverflow上让我觉得我终于有了一些理解。然后我去测试了一下,这是新手观点的总结。如果我错了,请纠正我,因为这是基于推理,而不是专业知识。关机Shutdown禁用Send和/或Receive方法,具体取决于提供的参数。它不会禁用底层协议(p

c# - 是否应该对 Dispose 方法进行单元测试?

我正在使用C#。是否建议对处置方法进行单元测试?如果是,为什么以及应该如何测试这些方法? 最佳答案 是的,但可能很难。Dispose实现中通常会发生两件事:非托管资源被释放。在这种情况下,很难验证调用的代码,例如Marshal.Release。一个可能的解决方案是注入(inject)一个可以进行处理的对象,并在测试期间将模拟传递给它。一些这样的效果:interfaceComObjectReleaser{publicvirtualRelease(IntPtrobj){Marshal.Release(obj);}}classClassW

c# - 如何删除作为 HttpResponseMessage 的 StreamContent 发送的文件

在ASP.NETwebapi中,我向客户端发送了一个临时文件。我打开一个流来读取文件并在HttpResponseMessage上使用StreamContent。客户端收到文件后,我想删除这个临时文件(没有来自客户端的任何其他调用)客户端收到文件后,将调用HttpResponseMessage的Dispose方法,并且流也会被释放。现在,此时我也想删除临时文件。一种方法是从HttpResponseMessage类派生一个类,覆盖Dispose方法,删除此文件并调用基类的dispose方法。(我还没有尝试过,所以不确定这是否有效)我想知道是否有更好的方法来实现这一点。

java - 为什么在调用 setVisible(false) 和 dispose() 时调用的窗口/组件监听器不同?

我看到的区别是(在JDK1.7上运行):setVisible(false),invokescomponentHiddenbutnotwindowClosed(TheAPIstatesonlyondispose()soit'sOKevenifitirritatesme)但是dispose(),invokeswindowClosedbutnotcomponentHidden短期运行示例代码(MCVE):publicclassJDialogTestextendsJDialog{privatestaticfinallongserialVersionUID=1L;publicJDialogTes

java - GC 是否从 Metaspace 收集垃圾?

我一直认为垃圾收集器只清除堆,现在我这么认为。在java8中,permGen被删除并被Metaspace取代。据我所知,Metaspace是垃圾收集器(https://stackoverflow.com/a/24075360/2674303)谁从Metaspace收集垃圾? 最佳答案 我认为您的困惑源于口语化的术语“垃圾收集”,该术语被广泛使用但并未真正描述托管环境中发生的情况。内存管理是一个复杂的过程,它被简化为:识别哪些对象是垃圾,其实就是判断哪些对象可达(读作:不是垃圾),没有遇到的都认为是垃圾如有必要,将对象引用排队到引用队

java - 覆盖静态创建的对象中的方法

全部,由于我正在使用的库中存在错误,我需要覆盖所有扩展特定类的对象的dispose()方法并使其成为NO-OP。我知道如果我直接创建类的新实例,这很容易做到:layerManager=newLayerManagerLayer(wwd){@Overridepublicvoiddispose(){}};问题是我得到的很多对象实例不是由我的客户端代码直接构建的,而是通过静态库方法调用创建的。//HereIwanttooverridethedisposemethod,butIcannot.Layerl=ShapefileLoader.makeShapefileLayer(this.getCla

Java:方法不返回。 (XComponent.dispose

我使用Java程序中的OpenOfficeAPI为我处理文档。有时(每100k次左右调用一次)Document的dispose方法不返回,CPU负载保持在100%,但似乎什么也没有发生。在这种情况下我应该如何正确操作/编码?我目前的做法是等待dispose成功两秒。如果没有,我会尝试通过适当的API终止OpenOffice。如果这也失败了(如我所料),那么我会通过调用来终止soffice进程XDesktopxDesk=(...)//achivedesktopxDesk.terminate();Runtime.getRuntime().exec("pkillsoffice");//"ta

java - 从 JDialog 返回值; dispose(), setVisible(false) - 例子

我知道,这个问题经常出现在SO中,例如here:但我想举一些非常具体的例子……我只是不确定我做的是否正确。我有一个JDialog,我可以在其中键入一些值,选择一些复选框......随便......我还在MyDialog中创建了一些Response对象,它表示MyDialog的“答案”。在调用/创建JDialog的JFrame中:MyDialogd=newMyDialog(this,...);d.showDialog();//AfterMyDialogisclosed(it'smodal):MyDialog.ResponsedialogResponse=d.getDialogRespon

Java Swing dispose() 与 setVisible(false)

我有一个独立的Java应用程序,它从数据库中获取数据并将其显示在JTable中。当应用程序启动时,系统会在JDialog中提示用户输入用户名/密码。输入正确的凭据后,将显示包含数据的主JFrame。在主JFrame上,我有一个注销按钮,单击该按钮时,应关闭主JFrame并重新显示登录JDialog。除了我发现单击注销按钮时主JFrame不会消失外,一切都正常。下面是我的代码的一个小示例:主.java:importjavax.swing.SwingUtilities;publicclassMain{publicstaticvoidmain(String[]args){SwingUtili

java - 组织.eclipse.swt.SWTException : "Widget is disposed" from table refresh

该应用程序是一个基于Eclipse3.6的RCP(因此jface版本3.5.2)在Windows7上运行。我有一个包含TableViewer并对其调用refresh()的自定义View类。有时,但不是经常,它会导致下面的堆栈跟踪。它是从UI线程中调用的。我怀疑问题出在将支持列表更改为表的其他代码,但执行此操作的任何代码也在syncExec或asyncExec方法中运行,所以我不明白它如何成为更改之间的同步问题表格项目和查看器的刷新。有什么想法可以防止这种情况发生吗?!ENTRYorg.eclipse.jface422010-10-2009:22:06.140!MESSAGEProble