窗体内引用控件导致无法释放 [私人]
Dim c As CommandButton
Private Sub Form_Load()
Set c = Me.Command1
End Sub
就行了
解决办法在unload中set c = nothing
An event was unable to invoke any of the subscribers [私人]
An event was unable to invoke any of the subscribers
要重现, 很简单
class1:
Option Explicit
Private WithEvents m_Form As Form
Private m_Self As Class1
Public Sub Bind(f As Form)
Set m_Form = f
Set m_Self = Me
End Sub
Private Sub m_Form_Unload(Cancel As Integer)
Set m_Self = Nothing
Set m_Form = Nothing
End Sub
form:
Dim i As Long
Dim c(1000) As Class1
For i = 0 To 255
Set c(i) = New Class1
c(i).Bind Me
Next i
事件订阅居然还有上限, 真是受不了
vb6升级到vb.net? 小心!
Com Class, Interop Forms Toolkit, MS毕竟不止顾着宠小儿子, 也给那些大的留了些活路, 现在用来效果还真不错, 使得VB6有老树开花第二春的感觉了, 有了庞大的framework类库, 有了更庞大的易于反编译的第三方组件和类库, 生活又开始阳光灿烂起来了, 开发效率还是.Net高了很多很多, 但是弄着弄着发现一个问题了
因为调用了scriptcontrol执行脚本, 但没有format函数, 于是用addobject加入了一个自定义类的实例, 里面的format函数其实转而调用的是VBA.Format, 也用了这么久, 现在迁移到VB.Net, 却发现gloal.miscrosoft.visiualbaisic.format函数和原来的VBA.format行为太不一致了, 心想, 这下如何是好? 傻眼了!
google吧, 找到一个, 还行, 效率是差点, 但将就能用:
set fmt = CreateObject("MSSTDFMT.StdDataFormat")
fmt.Format = sFormat
set rs = CreateObject("ADODB.Recordset")
rs.Fields.Append "fldExpression", 12 ' adVariant
rs.Open
rs.AddNew
set rs("fldExpression").DataFormat = fmt
rs("fldExpression").Value = vExpression
Format = rs("fldExpression").Value
rs.close: Set rs = Nothing: Set fmt = Nothing
End Function
msn登录只有进程没有界面的解决方法 [私人]
最后进IE选项, 进行reset, 再打开 OK了
后来又出问题了 至今没搞定 还是用xp自带的windows messenger吧
但是用这个, 一是联系人不能搜索, 二是原来的聊天记录没法共用
狠狠心, 再搜索吧
tetra19
Junior Member with 1 posts.
The answer is simple, simply unplug your router wait 30 seconds replug it, then try
Make sure you have no msnmgr in task manager, then start up msn and it should work
I had the same problem and this fixed it
Hope it works for you!
问题解决
chm文件索引和查找无效的解决方案 [私人]
>I'd recommend that you run MJ's Help Diagnostics,
available from:
>http://helpware.net/downloads/index.htm#MJs
http://helpware.net/downloads/index.htm#MJs
Description:
MJ's Diagnostics is a small utility that reports if all the HTML Help runtime DLLs are installed and registered correctly. If a DLL is not registered then it will ask if you want to register it. It also checks the RoboHelp DLL (HHActiveX.dll) and MS Help 2 DLLs.
运行后搞定了, 应该是组件没有正常注册, 可能是给第三方软件给弄的
Winform内存泄露是如此容易的一件事 [私人]
还有WebBrowser, 也得这样, 而且如果在窗体构造函数而不是Load中Navigate, 那么就是直接Webbrowser.Dispose也释放不了
要显式释放也行, 但你得告诉人一声啊, DevExpress的XtraGrid也得显式调用Dispose, 虽然Control都实现了IDispable接口, 可是如果你不调用
Form的Dispose调用是不顶用的, 只能自己处理, 像我这样一知半解的肯定有很多人, 估计这世上有大量的Winform程序都内存泄露着
VS2008 IDE的状态栏居然找不回来了
reset windows layout, reset toolbar, reset keyboard, 发现都不好用, 最后搜索了一下
工具--〉导入和导出设置--〉重置所有设置
(Tools->Import and Export Settings->Reset all settings)
这才搞定, 可能是被什么插件安装导致的问题, 也有可能是vs2008 sp1安装后产生的, 不确定了
被改变也不全是坏事, 当然在这里不是好事, 也有改得面目全非的, 比如
有人提议要重拍三国演义, 大家说到如何选演员, 结果这位说:
赵本山演吕布,郭德纲演典韦,SHE演刘关张。。。。。。
想想就是一部超强喜剧片, 如果真能用武林外传的恶搞精神, 把人拉来拍一拍, 就是我们广大观众的眼福了...
C#枚举所有sql server数据库实例
DataColumn column2 = dataSources.Columns["ServerName"];
DataColumn column = dataSources.Columns["InstanceName"];
DataRowCollection rows = dataSources.Rows;
string[] array = new string[rows.Count];
for (int i = 0; i < array.Length; i++)
{
string str2 = rows[i][column2] as string;
string str = rows[i][column] as string;
if (((str == null) || (str.Length == 0)) || ("MSSQLSERVER" == str))
{
array[i] = str2;
}
else
{
array[i] = str2 + @"\" + str;
}
}
Array.Sort<string>(array);
注意, 不仅仅是SERVER, 一台服务器上的多个实例(instance)都可以得到
给闲置的内存找点活干
一般情况下, 系统的2G内存是用不了的, 大多数时间是在800M以内, 再加上我已经弃暗投明的换XP系统了, 所以内存是很宽裕的.
但硬盘实在是性能瓶颈, 5400转的硬盘极慢, 而且还声音大, 不稳定, 用HDTunes测试的那条曲线就跟过山车一样忽上忽下, 于是还是找个把内存虚拟成硬盘的软件用用吧
查了一下, 大家都比较喜欢RamDisk, 真是小巧好用又实惠, 于是划了512M内存给这个虚拟硬盘, 然后把IE临时文件夹, 系统临时目录都指到了这个新分区下, 性能有没有提升不知道, 反正任务管理器里的内存占用是显著上去了, 心里总算平衡些, 否则2G内存用不到1G那是何等的铺张浪费, 这种可耻的行为简直可以和公费吃喝相媲美了
大块头未必有大智慧, 有些非常好用的软件不但尺寸小, 而且界面也简单, 减肥除了爱美的女士, 也应该是我们软件开发者们的向往
using用用还是蛮好的
因为考虑到数据库要支持sqlite, 而且数据访问层本身就是不允许并发的, 原因在于DataReader的连接不可断性, 所以我有一个全局的类去得到Session, 一旦得到, 马上自动开启事务, 而这个方法是通过lock来锁定防止并发, 如果session仍然在事务中, 则等待到事务完成才可以访问
得到session可以直接把事务开启, 但事务还得显式关闭, 每个地方都来一次关闭事务也挺烦的, 于是干脆加了一个DBContext类, 实现IDispose接口, 在释放时去关闭事务, 现在用起来感觉就很拉风了:
using (var context = new DBContext())
{
return context.Session.GetList(Domain.Category.Type == (int)type);
}
因为要加一个using在外面, 这样也就让自己不得不去尽量写短小点的函数, 否则括起来就很难看了

