VS2010,ReSharper 6.0完整版,如何显示所有提示?还有键盘快捷键吗?
我想在HashSet中处理一些新数据,不需要任何旧数据或旧的HashSet对象.其他地方没有引用旧的HashSet对象.
简单地做hashset = new HashSet<String>()并让JVM释放旧HashSet对象的内存或者我应该调用hashSet.clear()并重用相同的HashSet 是否更好?
根据openJDK,hashSet.clear()是:
public void clear() {
map.clear();
}
Run Code Online (Sandbox Code Playgroud)
和map.clear():
public void clear() {
modCount++;
Entry[] tab = table;
for (int i = 0; i < tab.length; i++)
tab[i] = null;
size = 0;
}
Run Code Online (Sandbox Code Playgroud)
由于map.clear()会迭代所有条目,所以当hashSet很大时会耗费时间吗?在这种情况下推荐使用哪一个,构造函数方法或clear()方法?
我很长一段时间都对这个问题感到困惑.我使用System.Threading启动新线程,就像这样:
ParameterizedThreadStart threadFileExport = FileExport;
Thread threadExport = new Thread(threadFileExport)
{
IsBackground = true,
Name = "threadExport",
Priority = ThreadPriority.AboveNormal
};
threadExport.Start(_dataTable);
Run Code Online (Sandbox Code Playgroud)
和
public void FileExport(object objTable)
{
SaveFileDialog saveFileDialog = new SaveFileDialog
{
DefaultExt = "xlsx",
Filter = "Excel 2007-2010|*.xlsx|" +
"Excel95,97,2003|*.xls|",
FileName = "table.xlsx",
Title = "Save as. . ."
};
saveFileDialog.ShowDialog();
}
Run Code Online (Sandbox Code Playgroud)
但是对话框不会显示,并且在执行"ShowDialog"时线程似乎会立即中止.这是一个错误还是我弄错了?后台线程可以显示保存文件对话框吗?