在这里使用VS 2015 ...刚刚制作了一个小型测试程序,用于比较使用任务的异步webrequest与我之前使用HttpWebRequest.BeginGetResponse
之前的方式之间的性能差异但重点是我试图通过实现IDispoable来处理我用于异步请求的状态对象,但是在我的诊断中它显示分配的RAM大小保持不变?我的印象是调用dispose会释放对象使用的资源?这是我正在使用的代码,我也尝试将对象设置为Nothing。
var data = [{
firstName: "Antonio",
lastName: "Moreno",
title: "Team Lead",
colorScheme: "#1696d3"
},
{
firstName: "Alfredo",
lastName: "Morales",
title: "Team Lead",
colorScheme: "#1696d3"
}];
function visualTemplate(options) {
var dataviz = kendo.dataviz;
var g = new dataviz.diagram.Group();
var dataItem = options.dataItem;
g.append(new dataviz.diagram.Rectangle({
width: 210,
height: 75,
stroke: {
width: 0
},
fill: {
gradient: {
type: "linear",
stops: [{
color: dataItem.colorScheme,
offset: 0,
opacity: 0.5
}, {
color: dataItem.colorScheme,
offset: 1,
opacity: 1
}]
}
}
}));
g.append(new dataviz.diagram.TextBlock({
text: dataItem.firstName + " " + dataItem.lastName,
x: 85,
y: 20,
fill: "#fff"
}));
g.append(new dataviz.diagram.TextBlock({
text: dataItem.title,
x: 85,
y: 40,
fill: "#fff"
}));
return g;
}
function createDiagram() {
$("#diagram").kendoDiagram({
dataSource: new kendo.data.HierarchicalDataSource({
data: data,
}),
shapeDefaults: {
visual: visualTemplate
},
});
var diagram = $("#diagram").getKendoDiagram();
diagram.bringIntoView(diagram.shapes);
}
$(document).ready(createDiagram);
答案 0 :(得分:1)
简单地实现IDisposable
不会自动释放内存,所有这些都取决于程序员释放托管和非托管资源。
在Dispose(disposing As Boolean)
方法中,您必须在实现处置功能的每个变量上调用Close()
或Dispose()
:
Protected Overridable Sub Dispose(disposing As Boolean)
If Not disposedValue Then
If disposing Then
'Here you dispose all managed resources.
respStream.Close()
respStream.Dispose()
resp.Close()
End If
End If
disposedValue = True
End Sub
完成异步操作后,请务必关闭IAsyncResult.AsyncWaitHandle
对象。您应该能够在每个回调方法的最后执行此操作:
ar.Close()